2016-08-12 13 views
2

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... 
} 
+0

名前ではなくメソッドにライターを渡します。 – chrylis

+0

それは働いた。名前の代わりにFileWriterを渡していますが、ファイルをもう作成しません。ありがとう。 – Jaykumar

+0

そして、記録のためだけに:テスト対象のクラスに依存関係注入を使用して**ファイルライターオブジェクトを**提供する場合は、PowerMockに切り替える必要はありません。テスト可能なコードを書くことの1つの中心点は、あなたのプロダクションコードで**新しい**ステートメントを使用することに注意することです(詳細はhttps://www.youtube.com/playlist?list=PLD0011D00849E1B79を参照)。 – GhostCat

答えて

2

。あなたは模擬する必要がありますFileWriter - これは実際のファイル書き込みを行うものです

+0

彼はとにかく 'Writer'を使うだけかもしれません。 – chrylis

+0

私はFileWriterを嘲笑しましたが、 "Mock for FileWriter、hashCode"の名前でファイルを作成します。 – Jaykumar

+0

@Jaykumar - 完全なコードを表示 –

関連する問題