2016-08-12 95 views
2

我正在编写一个JUnit测试用例,该方法使用FileWriter来创建文件,但文件实际上不存在。我正在使用PowerMockito来嘲笑File对象而不创建真实文件。我的测试通过了,但仍然在项目的上下文根目录中创建了一个名为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。编写可测试代码的一个核心要点是在生产代码中使用** new **语句(有关详细信息,请参阅https://www.youtube.com/playlist?list=PLD0011D00849E1B79)。 – GhostCat

回答

2

你嘲讽错场。你需要模拟FileWriter - 这是一个实际的文件写作

+0

不管怎样,他不妨使用'Writer'。 – chrylis

+0

我嘲笑了FileWriter,现在它创建了一个名为“Mock for FileWriter,hashCode”的文件。 – Jaykumar

+0

@Jaykumar - 显示完整代码 –