我今天遇到一个错误,当通过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时失败?
答案 0 :(得分:4)
assert
的评估与否取决于您是否使用-ea
(启用断言)标志。所以最好的猜测是,直接运行测试时的默认配置已启用-ea
但maven没有启用。
使用junit测试该条件的正确方法是:
assertTrue("test" == "test2");
或:
assertSame("test", "test2");
答案 1 :(得分:0)
原因可能正好与此前的答案相反。 尝试禁用enableAssertions for surefile,它在挖掘2天后对我有用。 (默认情况下这是真的!)
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<enableAssertions>false</enableAssertions>
</configuration>