Java 无法从junit测试访问测试资源

Java 无法从junit测试访问测试资源,java,Java,编辑:原来我有一段时间没有重建程序了。如果这类问题的所有其他答案都不适用于您,请尝试重新构建!谢谢蒂莫 我看了很多答案,试了很多东西。我知道我一定是做错了什么小事。如果有人有一个快速提示,请让我知道,这是慢慢杀死我 我的目录设置是: 我正在尝试使用 File testFile = new File(getClass().getResource("testDom.xml").getFile()); 我已尝试从类加载: File testFile = new File(GemsDomGetChi

编辑:原来我有一段时间没有重建程序了。如果这类问题的所有其他答案都不适用于您,请尝试重新构建!谢谢蒂莫

我看了很多答案,试了很多东西。我知道我一定是做错了什么小事。如果有人有一个快速提示,请让我知道,这是慢慢杀死我

我的目录设置是:

我正在尝试使用

File testFile = new File(getClass().getResource("testDom.xml").getFile());
我已尝试从类加载:

File testFile = new File(GemsDomGetChildrenTest.class.getResource("testDom.xml").getFile());
这两种方法我都试过了

/lambda-compiler/src/test/resources/testDom.xml
/src/test/resources/testDom.xml
/test/resources/testDom.xml
/resources/testDom.xml
/testDom.xml
testDom.xml
我也尝试过所有这些路径,但没有引入“/”

资源文件夹似乎也被添加为IntelliJ中的测试资源:


我知道这可能是一个重复的问题,被问了一百万次,但我真的很难看出我在做什么,与我迄今为止看到的所有其他问题不同。任何帮助都将不胜感激。

应该是
getResource(“/testDom.xml”)
应该可以:

URL resource = GemsDomGetChildrenTest.class.getClassLoader().getResource("testDom.xml");
File file = new File(resource.toURI());

好的,所以提莫能够弄明白。我已经有一段时间没有重建该项目了(:facepalm:)。来自python世界,这里的情况有些不同。谢谢大家和我一起努力,这真的很重要

你提到的代码在哪里?它在src/test/java中吗?只是确保它不在src/main/java或其他文件中,而是在/src/test/java/com.gems.compiler.services/gemdomGetChildrentest.java中。。。测试资源是否也需要位于/src/test/resources下的类似名称的包中?不,它可以放在根目录中。你可以在那里创建目录,但是,如果你需要/想要的话。你的目标是什么?因为这里有一个文件句柄,所以需要做一些额外的工作来读取内容。@Timo-我希望能够从我的单元测试中读取testDom.xml,这样我就可以测试一些执行自定义解析的服务方法。我最终会用它做更多的事情,但是当我尝试创建文件句柄时,我得到了一个NPE,因为getResource()返回null。我知道,对吗?但是仍然得到一个空指针。我能提供更多有用的信息吗?好吧,只是我刚刚创建了与屏幕截图相同的结构,并运行了上面的代码-没有NPE。我的测试类也在一个包下(不是默认的)。不知道那里可能有什么问题(@zyd,你确定你已经尝试过我的选项(class.getClassloader()…)?嘿,谢谢你的帮助,原来我已经有一段时间没有重建程序了。我知道这是一个非常简单的疏忽。你的答案确实正确。出于某种原因,我仍然得到一个空指针。我尝试了从包名开始到仅使用“testDom.xml”之间的每一条路径,带斜杠和不带斜杠。我可以提供更多信息来帮助调试这种情况吗?选中复选框,这样问题就结束了:)