gpt4 book ai didi

java - 调用 FileWriter 的单元测试方法

转载 作者:行者123 更新时间:2023-12-04 04:22:49 26 4
gpt4 key购买 nike

我正在尝试为调用 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() 下创建了对象怎么办?他们也可以被 mock 吗?

如果我的想法是不可能的,你可以建议什么建议来测试这种方法?我还了解了 JUnit 的 TemporaryFolder。我可以用它代替文件来创建文件夹和文件吗?

谢谢。

最佳答案

您可以将文件名更改为“user.name.test-file”之类的名称,然后读取文件并在完成后将其删除。

能够更改静态路径会更有用,但如果这是问题,您可以使用“../../../../../../../tmp/user.name. file"作为文件名并有效地忽略静态路径。 ;)

顺便说一句:catch(Exception e) 是一个非常糟糕的主意。恕我直言,您最好删除它。

关于java - 调用 FileWriter 的单元测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11878716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com