持續整合之路 Mock物件引起的測試失敗

2021-09-07 21:58:33 字數 675 閱讀 4286

今天遇到了乙個很奇怪的問題,糾結了好久。在和同事念叨這個問題時,突然想到了問題所在。

問題現象:在乙個service的單元測試類中有八個測試用例,單獨執行時都可以正常通過。可是一旦一起執行時,總是會有固定的兩個測試失敗。

問題原因:有乙個測試用例mock了service依賴的乙個dao物件,之後的用例再使用這個dao物件時,就使用了mock,而不是spring初始化的instance.

解決方法:在測試用例結束,重新將spring初始化dao物件set給service物件,具體**:

public class reportservicetest 

}

除了上面的方法,還可以通過設定用例的執行順序解決上面的問題。但是這個方法還是具有一定的危險性,一定要保證使用mock物件的測試用例最後執行,並且所有使用mock物件的用例之間要安排好執行順序。關於如何指定測試用例的執行順序,可以參考下面的文章:

understanding junit method order execution

junit test method ordering

ordered testcases execution in junit 4

Scrum團隊的持續整合之路(1)

每到專案接近尾聲的時候,專案經理往往是心裡最沒數的時候。專案經理最頭痛的問題是,越到專案後期,程式設計師交付的模組越來越多,聯調測試起來bug也越來越多,什麼時候能交付?說不清楚。下面的問答是幾乎每個專案都會出現的 老闆 按進度的計畫,我們能否按時發布產品?經理 沒法評估,這一輪測試完成的時間我和測...

持續整合工具是怎樣煉成的?持續整合工具實戰

它可以統計整個專案的覆蓋率 各包的覆蓋率 各類的覆蓋率,最後展示哪些 被覆蓋,哪些 沒有被覆蓋。持續整合報告 當乙個軟體專案使用了持續整合工具以後,許多的管理工作由不可靠的人為操作變為了機械自動化操作。作為專案開發成員,特別是專案經理,最關心的就是持續整合報告。進入持續整合控制台,可以看到所有在用的...

Run Code Run 託管的持續整合

runcoderun是個託管的持續整合服務,由relevance開發,其目標是github上的ruby專案。為何使用託管的持續整合服務?rob sanheim在其部落格中寫到 長久以來,群聚的原始碼控制 意指乙個站點容納多個開源專案 譯者注 已經成為開源所面臨的主要問題,而github成功地解決了這...