gpt4 book ai didi

java - JUnit - Java - 如何使用文件列表作为参数测试 void 方法

转载 作者:行者123 更新时间:2023-12-01 07:47:46 25 4
gpt4 key购买 nike

我有一个类,里面有这个方法:

  public class DirectoryWalker {

public void visitDirectory(String path,List<File> resultList ) {...}
...
}

我想测试一下这个方法,我开始按照下面的方法做。

   @Test
public void ListOfTheFiles(){

List<File> result = directoryWalker.visitDirectory("pathFile", new ArrayList<File>());
Assert.assertThat("path\File\\0A54-4444-2441-D554.xml", is(result));

说实话,我有点困惑,因为这是我第一次尝试使用列表作为参数来测试 void 方法。

我期望这个文件:

"path\File\\0A54-4444-2441-D554.xml

进入文件夹文件

你能帮我一下吗?谢谢

编辑:当然这个指令是错误的,因为结果被初始化为文件列表:

 List<File> result = directoryWalker.visitDirectory(...);

全类:

public class DirectoryWalker {

public void visitDirectory(String path, List<File> resultList ) {

File root = new File(path);

File[] list = root.listFiles();

for (File f : list) {
if (f.isFile() && f.getName().toLowerCase().endsWith(".xml")) {
resultList.add(f);
} else if(f.isDirectory()) {
visitDirectory(f.getAbsolutePath(),resultList);
}
}
}
}

最佳答案

Assert.assertThat("path\File\\0A54-4444-2441-D554.xml", is(result));

您以错误的方式使用断言。模式是:

 assertThat([ACTUAL_RESULT], [matcher]([EXPECTED_RESULT]))

你反其道而行之。

那么,如果预期结果是一个 List,那么为什么要将它与 String 进行比较?

应该是这样的:

 @Test
public void ListOfTheFiles(){
List<File> result = new ArrayList<>();
directoryWalker.visitDirectory("pathFile", result);
Assert.assertThat(result, hasItem(new File("path\File\\0A54-4444-2441-D554.xml")));

顺便说一句:

避免在硬编码文件路径中使用反斜杠 (\)。请使用正斜杠 (/),因为这样可以确保与非 Windows 系统的兼容性,这是使用 Java(而不是 C#)的主要原因之一...

关于java - JUnit - Java - 如何使用文件列表作为参数测试 void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621273/

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