我正在尝试为调用 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 时调用该方法时可能发生的情况。但是,我无法修改我正在测试的代码,因为其他开发人员创建了它们(尽管我认为创建单元测试是开发人员的责任)。
我想知道如何(如果可能的话)在文件和 fw 等方法下模拟对象。如果有在 if() 或 loop() 下创建的对象呢?他们也可以被嘲笑吗?
如果我的想法是不可能的,你有什么建议来测试这种方法?我还了解了 JUnit 的 TemporaryFolder。我可以用它代替文件来创建文件夹和文件吗?
谢谢。