maven 1在运行测试时失败

时间:2011-08-29 22:04:00

标签: java maven

我已经在应用程序使用maven 1中将junit版本从3.8更改为4.4。为此,我更改了project.xml,现在看起来像这样:

...
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.4</version>
      <properties>
<scope>test</scope>
  </properties>
</dependency>
...

我使用@Test或@Before等注释添加一些测试,这些测试在eclipse中运行完美。当我尝试在控制台中运行“maven test”时,我得到以下输出:

    test:compile:
[junit] Running com.myapp.Class1Test
[junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 0.721 sec
[junit] Running com.myapp.Class2Test
[junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 1.16 sec
[junit] Running com.myapp.Class3Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.538 sec
[junit] [ERROR] Test com.myapp.Class3Test FAILED
[junit] Running com.myapp.Class4Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.565 sec
[junit] [ERROR] Test com.myapp.Class4Test FAILED
[junit] Running com.myapp.Class5Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.565 sec
[junit] [ERROR] Test com.myapp.Class5Test FAILED
[junit] Running com.myapp.Class6Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.691 sec
[junit] [ERROR] Test com.myapp.Class6Test FAILED
[junit] Running com.myapp.Class7Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.549 sec
[junit] [ERROR] Test com.myapp.Class7Test FAILED
[junit] Running com.myapp.Class8Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.708 sec
[junit] [ERROR] Test com.myapp.Class8Test FAILED
[junit] Running com.myapp.Class9Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.643 sec
[junit] [ERROR] Test com.myapp.Class9Test FAILED
[junit] Running com.myapp.Class10Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.668 sec
[junit] [ERROR] Test com.myapp.Class10Test FAILED
[junit] Running com.myapp.Class11Test
[junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.644 sec
[junit] [ERROR] Test com.myapp.Class11Test FAILED
[echo]
       ==========================================================
         WARNING:  There were test failures!
       ==========================================================

失败的测试文件里面有多个测试。 Maven只是看不到它们。此外,当我在调试中使用maven时,我看到它加载隐式junit 3.8。

这就是为什么我认为旧的junit jar被使用了。我只是不知道在哪里或如何检测它。

任何帮助,建议,光线将不胜感激。

5 个答案:

答案 0 :(得分:4)

尝试找出加载junit 3.8的原因。您可以使用mvn dependency:tree然后根据结果将其特别排除。

答案 1 :(得分:3)

我不知道<properties>元素的范围与您使用它的方式有任何意义,除非另一个插件需要它。您似乎已经尝试将Maven 2概念强制转换为Maven 1。

您可以尝试设置maven.test.classpath属性以帮助它获取JUnit JAR。我对此工作没有任何保证 - 在Maven 1.x中从未支持过JUnit 4,Maven 1.x现在还没有积极开发超过4年。正如您所见,所有其他响应者正在回答仅与Maven 2相关的答案 - 您应该强烈考虑更新您的构建。

答案 2 :(得分:2)

尝试使用最新版本(尽管它本身可能无法解决您的问题),也可以使用

mvn -X clean test

并在原始帖子中加入stactrace。

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.2</version>
  <scope>test</scope>
</dependency>

您还可以查看以下和exclude junit 3.8 jar

生成的输出
mvn dependency:tree

答案 3 :(得分:1)

试试这个:

Add an adapter in your tests :
    /**
     * @return instance of this as Junit test case
     */
    public static junit.framework.Test suite ()
    {
        return new JUnit4TestAdapter(IntTestSpringCoherency.class);
    }

取自:http://maven.40175.n5.nabble.com/Can-maven-1-x-run-Junit-4-tests-td92773.html

答案 4 :(得分:0)

可能的解决方案/解决方法:

public void AClassUnitTest {
public static junit.framework.Test suite ()
    {
        return new JUnit4TestAdapter(AClassUnitTest.class);
    } 


    @Test
    public method_income_expected(){
    ...
    }

}

谢谢!