为什么JUnit测试在直接调用时通过,但在使用Maven调用时失败?

时间:2014-01-14 13:56:01

标签: java unit-testing maven junit

我今天遇到一个错误,当通过Maven运行时测试失败:“mvn test”并在通过jUnit直接运行时传递。

以下是有问题的代码:

public class TestAssert {

    @Test
    public void test() {
        assert("test" == "test2");
    }

}

上面的代码通过了Junit测试,但是当使用Maven执行测试时,我收到了这个错误:

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.008 sec <<< FAILURE!
test(TestAssert)  Time elapsed: 0.003 sec  <<< FAILURE!
java.lang.AssertionError
    at TestAssert.test(TestAssert.java:15)

直接使用jUnit时是什么时候通过,使用Maven时失败?

2 个答案:

答案 0 :(得分:4)

assert的评估与否取决于您是否使用-ea(启用断言)标志。所以最好的猜测是,直接运行测试时的默认配置已启用-ea但maven没有启用。

使用junit测试该条件的正确方法是:

assertTrue("test" == "test2");

或:

assertSame("test", "test2");

答案 1 :(得分:0)

在Eclipse / GGTS中传递的JUnit测试,但在使用错误信息“mvn test”运行时失败:“引起:java.lang.AssertionError

原因可能正好与此前的答案相反。 尝试禁用enableAssertions for surefile,它在挖掘2天后对我有用。 (默认情况下这是真的!)

<groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20</version>
      <configuration>
        <enableAssertions>false</enableAssertions>
      </configuration>