0
テスト中のメソッドにコンストラクタ呼び出しがあります。私はUIを起動しようとしているので、それを嘲笑したい。私もコンストラクタの入力を嘲笑したが、それでも実際のインスタンスを作成しようとしている。PowerMockito.whenNewがモックを作成していません。実際のインスタンスが作成されました。
量産コード:
public void methodToTest() {
SaveAsDialog sd = new SaveAsDialog(getSite().getShell());
sd.setOriginalFile(file);
sd.open()
}
テストコード:
Shell mockShell=Mockito.mock(Shell.class);
IEditorSite site = Mockito.mock(TestEditorSite.class);
Mockito.when(site.getShell()).thenReturn(mockShell);
SaveAsDialog dialogMock=Mockito.mock(SaveAsDialog.class);
PowerMockito.whenNew(SaveAsDialog.class).withArguments(site.getShell()).thenReturn(dialogMock);
SaveAsDialog sd = new SaveAsDialog(getSite().getShell());
ラインは、それが実際のインスタンスを作成して呼び出されたとき、私はここにどんな事をしないのです。
私はあなたがコンストラクタのパラメータとしてテスト中のあなたのクラスにSaveAsDialog
のインスタンスを渡す必要があります
@RunWith(PowerMockRunner.class)
@PrepareForTest({SaveAsDialog.class})
ありがとうチモシー、truckle 。出来た。それは私がそれを変更することはできませんレガシーコードです。 – Raghu
あなたがそれを変更できない場合、unittestsには何が必要ですか? –