我还在学习junit,我想知道如何为这个问题编写一个junit测试用例。我正在使用emma插件来运行覆盖。将值设置为(字符串)路径和名称后,我该怎么办?在@Test
public static void createReport(final String path, final String name) throws IOException {
File outDir = new File("Out");
if (!outDir.exists()) {
if (!outDir.mkdir()) {
}
}
}
在设置参数值后,我还需要使用assertEquals吗?
答案 0 :(得分:2)
相反,如果您使用outDir.mkdirs()
(如果文件夹不存在则创建文件夹),那么Emma不会抱怨测试不包含该行。
如果你想要非常彻底,那么你测试代码的方式就是在故意缺少目录的情况下运行它并检查它是否已创建。删除输出文件夹作为测试的一部分:
File outDir = new File("Out")
/* You will probably need something more complicated than
* this (to delete the directory's contents first). I'd
* suggest using FileUtils.deleteDirectory(dir) from
* Apache Commons-IO.
*/
outDir.delete();
// Prove that it's not there
assertFalse(outDir.exists());
createReport(...);
// Prove that it has been created
assertTrue(outDir.exists());
如果您可以使用该选项,请将报告写入临时文件夹。
答案 1 :(得分:0)
我的建议是使用临时文件夹,以便在测试后让地方保持干净:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
您可以使用此对象定义新的路径文件夹。
File tmpFolder = folder.newFolder("subfolder");
File tmpFile = new File(tmpFolder.getAsbolutePath(),"newFileName");
您所要做的就是使用此对象调用您的方法:
obj.createReport(tmpFolder.getAbsolutePath(), tmpFile.getAsbolutePath() )
然后在单元测试中,您可以检查目录是否已创建:
Assert.asserttrue(tmpFolder.exists());
Assert.asserttrue(tmpFile.exists());