我正在尝试为调用 FileWriter 的方法编写单元测试。我正在使用 JUnit 4.8、Powermock 和 Mockito。我正在测试的方法看起来像这样。
public void methodToTest(String fileName, String text){
File file = new File (someStaticString) //string is a static field of the class and the path is a dir
if(!file.exist()){ //create dir}
try{
FileWriter fw = new FileWrite(file.getAbsolutePath() + "/" fileName, true);
fw.write(text);
fw.close();
}
catch(Exception e){
e.printStackTrace
}
}
如果 file 和 fileWriter 在方法外部声明,我可以使用mockito 和 powermock 来模拟它们,这样我就可以测试调用该方法时可能发生的情况,因为我正在练习 BDD。但是,我无法修改我正在测试的代码,因为其他开发人员创建了它们(尽管我认为创建单元测试是开发人员的责任)。
我想知道如何(如果可能的话)在 file 和 fw 这样的方法下模拟对象。如果在if()或loop()下创建了对象怎么办?他们也能被嘲笑吗?
如果我的想法不可能,你有什么建议来测试这种方法?我还了解了JUnit的TemporaryFolder。我可以用它代替文件来创建文件夹和文件吗?
Thanks.
您可以将文件名更改为类似“user.name
.test-file”并读取该文件并在完成后将其删除。
能够更改静态路径会更有用,但如果这是问题,您可以使用“../../../../../../../tmp/user.name.file”作为文件名并有效忽略静态路径。 ;)
顺便说一句:catch(Exception e)
这是一个非常糟糕的主意。恕我直言,你最好删除它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)