文件系统的Java与Junit集成测试
我有这门课:文件系统的Java与Junit集成测试,java,junit,integration-testing,spring-test,Java,Junit,Integration Testing,Spring Test,我有这门课: public class FooFileRepo { @Override public File getDirectory(String directoryPath) { ... File directory = new File(directoryPath); ... return directory; } @Override public void mkdirs(File f) { ... f.getParentFi
public class FooFileRepo {
@Override
public File getDirectory(String directoryPath) {
...
File directory = new File(directoryPath);
...
return directory;
}
@Override
public void mkdirs(File f) {
...
f.getParentFile().mkdirs();
}
public void writeFile(String path, String content) throws FileNotFoundException, UnsupportedEncodingException{
...
try (PrintWriter writer = new PrintWriter(path, "UTF-8");) {
writer.println(content);
}
}
}
如何模拟文件系统操作来编写此类的单元测试
谢谢。使用PowerMock
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Printwriter.class })
public class SampleTestClass {
@Mock
private PrintWriter mockPrintWriter;
@Before
public void init() throws Exception {
PowerMockito.mockStatic(FileUtils.class);
}
@Test
public void test() throws IOException {
}
}
对于这样一个简单的测试,最好使用真正的文件系统。作为替代方案,您可以构建一个facade-to-file操作,并轻松地模拟这个facade
同时阅读以下答案:让文件指向测试资源目录中的某个内容否,因为我还必须测试写入文件操作。因此,请使用build/target目录进行测试,并在测试后清理此目录
public static class HasTempFolder {
@Rule
public TemporaryFolder folder= new TemporaryFolder();
@Test
public void testUsingTempFolder() throws IOException {
File createdFile= folder.newFile("myfile.txt");
File createdFolder= folder.newFolder("subfolder");
// ...
}
}