为什么我不能在单元测试中列出Java资源?

为什么我不能在单元测试中列出Java资源?,java,Java,我希望将src/main/resources中的一些文件复制到文件系统中。我想得到这些资源的列表,然后遍历它们并将它们复制出来。我正在使用的v0.9.11解析资源目录 public List<String> getMyResources() { Reflections reflections = new Reflections(new ResourcesScanner()); Set<String> resources = reflections.getR

我希望将
src/main/resources
中的一些文件复制到文件系统中。我想得到这些资源的列表,然后遍历它们并将它们复制出来。我正在使用的v0.9.11解析资源目录

public List<String> getMyResources() {
    Reflections reflections = new Reflections(new ResourcesScanner());
    Set<String> resources = reflections.getResources(Pattern.compile(".*"));
    return new ArrayList<>(resources);
}
我做错了什么?如何列出资源


编辑:为了清楚起见,我可以看到构建的jar中列出的资源。但是,我的单元测试无法列出
src/main/resources
中的资源,我想知道为什么会这样,以及如何使它们出现在资源数组中。

您能检查一下如何初始化
反射
对象吗

反思0.9.11 如果我使用您在问题中描述的反射(v0.9.11)方式

Reflections reflections = new Reflections(new ResourcesScanner());
…然后我可以重新创建此问题-我会得到一个反射
警告
ing。在jUnit测试中,我希望找到17个资源,但没有找到:

2020-03-11 14:54:59.039 [WARN ] [main] Reflections - given scan urls are empty. set urls in the configuration
...
java.lang.AssertionError: expected:<17> but was:<0>
…然后我得到这个:

2020-03-11 14:52:54.107 [INFO ] [main] Reflections - Reflections took 10 ms to scan 2 urls, producing 17 keys and 17 values
我的单元测试通过了

反思0.9.12 出于兴趣,如果升级到0.9.12,您的方法会抛出相同的警告,但也会引发运行时异常:

org.reflections.ReflectionsException: Scanner ResourcesScanner was not configured

查看jar文件的内容,注意maven包资源与您的期望有多么不同。相应地更正代码。注意测试资源没有打包在您的jar中(因为它们被认为是暂时的)。但是,当我运行单元测试时,没有找到资源-我不明白为什么它们没有出现。请检查此项目,解决资源文件夹扫描问题:
Reflections reflections = new Reflections(new ConfigurationBuilder()
        .setUrls(ClasspathHelper.forPackage("your.package.name.here"))
        .setScanners(new ResourcesScanner()));
2020-03-11 14:52:54.107 [INFO ] [main] Reflections - Reflections took 10 ms to scan 2 urls, producing 17 keys and 17 values
org.reflections.ReflectionsException: Scanner ResourcesScanner was not configured