2016-04-24 92 views
3

在我的構建服務中,兩個測試失敗,在本地運行時不會失敗。單元測試在構建服務中失敗,但不在本地

我發現的是,當我在本地執行mvn clean test時,我的測試類的排序順序是按字母順序排列的(包和類),但是在構建服務中運行時,它們看起來是隨機的。

這不是我的意圖,需要一個特定的「訂單」,所以我絕對擔心一個測試先於另一個暗示隔離問題。但是,我不認爲我可以告訴Maven以特定順序運行課程。

我能做些什麼來嘗試重現?

編輯

我克隆我的構建計劃,但在分叉回購(相同的代碼)指出,它沒有失敗的測試運行成功...

+0

我不認爲這是最好的方法,但如果你說構建服務的順序是隨機的,你可以在你的機器上設置'runOrder'來隨機,並希望遇到同樣的問題。 –

+1

測試不應該依靠訂單。每個測試都必須單獨運行,並使用'@ After'方法清理資源。但無論如何,你能提供代碼和例外爲什麼測試失敗嗎? –

+0

@SergheyBishyr我完全同意,但他們失敗,因爲他們不乾淨地運行命令,絕對看起來像是一個更快的方式來揭示爲什麼。 –

回答

5

你應該嘗試隨機執行mvn -Dsurefire.runOrder=random clean test在本地訂購。

但即使您的構建在本地失敗,隨機順序也不是因測試順序而重現失敗的最佳選擇。如果按字母順序排列運行時的測試都是綠色的,你也許可以讓你的構建始終失敗,mvn -Dsurefire.runOrder=reversealphabetical clean test

也有一對夫婦更多的選擇 - 看runOrder documentation

相關問題