如何在junit5中模拟java.nio.file.files.write()

olqngx59  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(238)

我得写封信 JUnit5 在下面的代码中覆盖catch块的测试用例。但是,我不能扔 IOException 因此,它永远不会在捕捉块中结束。我尝试了几件事,但都没有成功 Files.write(...) 抛出所需的异常。如何抛出此异常?
代码覆盖

private static final String pathString = "path";

public String createFile() {
  JSONObject json = new JSONObject();
  String file;
  json.put("key", value);
  try{
     Path streamJson = Files.write(Paths.get(pathString), json.toJSONString().getBytes());
     file = streamJson.toString();
     return file;
  } catch(IOException e){
       return null;  
    }
}
ndasle7k

ndasle7k1#

恐怕单凭junit5无法解决您的问题。我不知道像powermock这样的库是否能解决您的问题。
如果不是,那么重构您的代码,使用一个封装代码的类来编写文件(比如filehelper、文件系统、filerepository或类似的东西)怎么样?
通过这种方式,您可以对该类进行模拟,使模拟的行为与您的测试用例所需的类似。

5lhxktic

5lhxktic2#

获取ioexception至少有两种方法:

throw new IOException();


打开您的文件系统,并将您试图写入的文件设置为只读。

相关问题