Java 如何断言其他模块中存在的文件-JUNIT
我的目录结构如下所示Java 如何断言其他模块中存在的文件-JUNIT,java,maven,junit,junit4,Java,Maven,Junit,Junit4,我的目录结构如下所示 Root |--A |--src |--target |--output.xml |--B |--src |--test |--java |--MyTest.java @Test public void test() { File f = new File(this.getClass().getClassLoader().getResource("A/out
Root
|--A
|--src
|--target
|--output.xml
|--B
|--src
|--test
|--java
|--MyTest.java
@Test
public void test() {
File f = new File(this.getClass().getClassLoader().getResource("A/output.xml").getFile());
assertTrue(f.exists());
}
我的Junit测试方法如下所示`
@Test
public void testXmlGeneration() {
File file = new File("output.xml");
assertTrue(file.exists());
}
我想检查output.xml是否在目录A中生成。上面的测试失败了
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
我也尝试了下面的方法,但在NullPointerException中失败了`
File file = new File(this.getClass().getClassLoader().getResourceAsStream("A/output.xml").toString());
assertTrue(file.exists());
NullPointerException堆栈跟踪如下所示
java.lang.NullPointerException
at com.B.StatisticsTest.testXmlGeneration(StatisticsTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
它的.toString()方法。它不会考虑文件,这就是为什么你得到这个错误你可以尝试如下< /p>
Root
|--A
|--src
|--target
|--output.xml
|--B
|--src
|--test
|--java
|--MyTest.java
@Test
public void test() {
File f = new File(this.getClass().getClassLoader().getResource("A/output.xml").getFile());
assertTrue(f.exists());
}
尝试将完整路径指定为
新文件(“Root/A/output.xml”)
,并共享NPR stacktrace。java.lang.AssertionError失败。StackTrace与上面相同@NullPointer与上面相同stacktrace的NullPointer异常一起失败。(this.getClass().getClassLoader().getResource(“A/output.xml”).getFile()将返回一个文件,如果没有这样的文件,它将返回NullPointer。尽管文件存在,我怀疑可能存在一些配置问题!无论如何,感谢您的快速回复!