2016-09-27 98 views
1

我有一个具有失败测试的Gradle构建,但Gradle不会将构建注册为失败。但是,如果删除特定的测试用例,构建会正确失败。这是为什么?为什么Gradle将构建失败的测试标记为成功?

$ ./gradlew clean check 

:clean 
:compileJava 
:processResources UP-TO-DATE 
:classes 
:compileTestJava 
:processTestResources UP-TO-DATE 
:testClasses 
:test 

com.example.FooProgramCliTest > fail FAILED 
    java.lang.AssertionError at FooProgramCliTest.java:26 

1 test completed, 1 failed 
:check 

BUILD SUCCESSFUL 

代码示例on GitHub,因为这是一个有点过于庞大而在这个问题有意义身上重现。

+0

单元测试的代码是什么? – kazanaki

+0

有点过于复杂,直接显示在问题中,请参阅我添加到问题中的链接(与以下答案中的链接相同)。 –

+0

好的,如果你已经有了答案,那么你可以接受你自己的答案,这样这个问题就不会出现“打开”。是这样吗? – kazanaki

回答

1

确保您的测试不会无意中导致System.exit(int)被调用。这样做会阻止Gradle注册测试失败。有关这可能发生的示例用例,请参见here