FileWriter
を使用してファイルを作成する方法は、実際にファイルが存在しないため、JUnit
のテストケースを作成しています。私は実際のファイルを作成せずにFile
オブジェクトを模擬するためにPowerMockito
を使用しています。私のテストは合格しますが、それでもプロジェクトのコンテキストルートにMock for file,hashCode
という名前のファイルが作成されます。このファイルを作成しないようにする方法はありますか?いくつかの同様の質問がありますが、なぜこれが起こっているのかはっきりしていません。したがって、デバッグ中にコードがnew FileWriter
に達すると、ファイルが作成されています。MockitoとPowerMockitoを使用してファイルをモックする
おかげで、
JUnitテスト:テスト対象
@Test
public void testCreateCSVFile() throws Exception {
File mockFile = Mockito.mock(File.class);
PowerMockito.whenNew(File.class).withAnyArguments().thenReturn(mockFile);
rest of the test...
}
方法:あなたが間違ったフィールドをからかっている
public void createCSVFile(List<IUiIntegrationDto> intgList, String fileName) throws Exception {
FileWriter fileWriter = new FileWriter(fileName);
rest of the code...
}
名前ではなくメソッドにライターを渡します。 – chrylis
それは働いた。名前の代わりにFileWriterを渡していますが、ファイルをもう作成しません。ありがとう。 – Jaykumar
そして、記録のためだけに:テスト対象のクラスに依存関係注入を使用して**ファイルライターオブジェクトを**提供する場合は、PowerMockに切り替える必要はありません。テスト可能なコードを書くことの1つの中心点は、あなたのプロダクションコードで**新しい**ステートメントを使用することに注意することです(詳細はhttps://www.youtube.com/playlist?list=PLD0011D00849E1B79を参照)。 – GhostCat