2016-04-20 94 views
1

Jenkins中有一個奇怪的情況......我剛開始在我的工作中使用Gradle作爲項目,當我在JUnit本地運行測試時,一切正常。但是,當jenkins爲分支「A」的構建運行這些測試時,由於斷言(總是相同的測試),只有一個測試失敗。Junit測試在Jenkins Gradle版本中失敗,但本地不能

org.junit.ComparisonFailure:預計: 「E [ZZ0530] Z」 不過是: 「E [SY5654] Z」

它看起來像模仿不注入或模擬被忽略的 「當」嘲笑聲明。

下面是測試:

@Test 
public void testEvent() { 
    Date eventDateTime = TimeUtils.parseDate("2013-05-30 00:00:00"); 
    event.setEventDatetime(eventDateTime); 

    //Mocking the prefix return 
    Mockito.when(eventCodeHelperMock.getEventCodePrefixFromEvent(event)).thenReturn("EZZ"); 

    //Tested methode 
    eventWrapper.setSuffix("Z"); 

    // Event code = prefix + date + suffix 
    assertEquals("EZZ0530Z", event.getEventCode()); 
} 

什麼是很多奇怪的是,當我創建一個分支「B」從分支上詹金斯在創建時所建的「A」所有測試成功。

我已經做了一些研究,並試圖強制其他構建,消滅當前的工作空間和重新創建工作,但它沒有奏效。

感謝您的幫助!

回答

0

我以前遇到過類似的問題,這是由於junits測試運行的順序。例如,一個測試會修改一個對象的狀態,但是您不會看到這個效果,直到測試以不同的順序運行,並且測試意外失敗。在您發佈的問題中沒有足夠的代碼來說明是否確實如此,但我會建議檢查運行測試的順序,並且還要查看您正在使用的對象以確定是否存在這些物體的狀態是「變髒」的問題。

+0

感謝您的快速回答,它真的幫助!實際上,我正在使用沉重的遺留代碼,這個測試甚至沒有測試現在的類(不是真正的單元測試),有很多單例和非注入的依賴關係(就像你提到的那樣,它改變了狀態的對象)。我刪除它,一切正常!再次感謝! –

+0

沒問題,很高興你解決它 – robjwilkins