だから私は、コンストラクタを持ってテストするためのクラスを持っている -パワーMockito WhenNew does'nt仕事
public class IdRunnable{
public IdRunnable(Node root) {
this.saHandler = new Handler(root);
}
public void call(){
//Somes codes
}
}
私はnew演算子が呼び出されたときにモックオブジェクトを注入するPowermockフレームワークを使用しています。テストクラスは -
@RunWith(PowerMockRunner.class)
@PrepareForTest({IdRunnable.class,Handler.class})
public class IdRunnableTest {
private IdRunnable runnable;
@BeforeClass
public void oneTimeSetUp(){
Node root = new Node();
Handler handler = mock(Handler.class);
whenNew(Handler.class).withArguments(root).thenReturn(handler);
runnable = new IdRunnable(root);
}
@Test(groups = {TestGroup.UNIT_TESTS})
public void testCall(){
runnable.call();
}
}
私が代わりにそれは本当のハンドラ・オブジェクトを作成するに行くIdRunnableのコンストラクタで新しいステートメントをからかっていることがわかりますテストを実行すると。 どういうわけかコード
whenNew(Handler.class).withArguments(root).thenReturn(handler);
は私にとっては機能しません。コードに何が間違っているのか誰にでも示唆することができます。
ありがとうございました。
matcherを変更すると動作します: 'whenNew(Handler.class).withArguments(Mockito.any(Node.class))。then return(handler);'? – troig