如何断言其他模块中存在的文件 - JUNIT

时间:2017-05-30 03:57:38

标签: java maven junit junit4

我的目录结构如下

Root
|--A
   |--src
   |--target
   |--output.xml 

|--B
   |--src
       |--test
            |--java
                 |--MyTest.java

我的Junit测试方法如下所示

@Test
public void testXmlGeneration() {
   File file = new File("output.xml");
    assertTrue(file.exists());
}

我想检查是否在目录A中生成output.xml。

以上测试失败
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)

1 个答案:

答案 0 :(得分:0)

   File file = new File(this.getClass().getClassLoader().getResourceAsStream("A/output.xml").toString());

它的.toString()方法。它不会被视为文件,这就是为什么你可以尝试下面的错误

  @Test
  public void test() {
    File f = new File(this.getClass().getClassLoader().getResource("A/output.xml").getFile());      
    assertTrue(f.exists());
  }