我只想编写一个 JUnit 测试用例,它只测试我下面的代码是否已成功将目录复制到新目录。
File origPath = new File("/sourceDir/");
File newPath = new File("/destDir/");
try {
FileUtils.copyDirectory(origPath, newPath);
} catch (Throwable e) {
}
请建议,我如何编写 JUnit 测试或模拟来测试上述代码。
您需要临时文件夹规则。
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
然后创建一个新文件夹:
File source = tempFolder.newFolder();
然后调用 copyDirectory 方法:
FileUtils.copyDirectory(source.getAbsolutePath(), source.getParent() + "/dest");
然后您可以检查该文件夹是否存在:
new File(tempFolder.getRoot(), "dest").exists()
一个简单的解决方案是检查/sourceDir/
目录中是否存在所有文件/destDir/
:
File origPath = new File("/sourceDir/");
File newPath = new File("/destDir/");
for (File file : origPath.listFiles()) {
assertTrue(new File(newPath, file.getName()).exists());
}
你可以模拟,但这只会测试你调用的一些方法,而不是它实际工作,即它看起来更像一个集成测试,我会简单地创建一些真正的测试,例如:
注意:最近版本的 JUnit 包含一个TemporaryFolder
class,它应该可以帮助您处理大部分“伪造目录”部分。另请参阅此帖子以获取示例。
除非在任何测试中使用模拟的方法中有很多非 IO 逻辑copyDirectory
是没有意义的,因为它只会测试代码调用执行它包含的操作。
所以测试将不得不:
copyDirectory
方法。