2016-09-27 103 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