【发布时间】:2022-07-31 17:56:00
【问题描述】:
我想让这段代码可测试,但是在方法中创建的 URI 和 File 实例给我带来了问题。我无法为它们定义模拟行为,也不想使用 PowerMock,因为它们没有反映 Jacoco 的测试覆盖率。
如果可能的话,我们能否以某种方式重构代码。如果我们可以保留方法的静态性质,那将是更可取的。更改它会弄乱代码的其他部分。
public static List<String> getAbsoluteFilePaths(String dirUrl) throws URISyntaxException {
URI uri = new URI(dirUrl);
File folder = new File(uri);
File[] fileList = folder.listFiles();
List<String> fileNames = new ArrayList<>();
if (fileList != null) {
for (File file : fileList) {
String fileOrDirUrl = uri.getScheme() + "://" +
(uri.getAuthority() != null ? uri.getAuthority() : "")+
file.getAbsolutePath();
if (file.isFile())
fileNames.add(fileOrDirUrl);
else if (file.isDirectory())
fileNames.addAll(getAbsoluteFilePaths(fileOrDirUrl));
}
}
return fileNames;
}
【问题讨论】:
-
but the URI and File instance created inside the method are giving me problems.- 究竟是什么问题?
标签: java unit-testing mocking refactoring static-methods