1

OK我有在VS2013,我不認爲有隨機單元測試失敗

我有一個測試的任何地方解決互聯網上的代碼覆蓋率一代的問題900+的單元測試我的項目正在運行,如果在VS2010

測試套件工作正常(100%合格),如果我在VS2013從菜單中測試運行它們>運行全部通過>套件中的所有測試

但是,如果我想從菜單Test> Analyze Code Coverage> All Tests生成VS2013中的代碼覆蓋率,那麼很多測試(其中500個以上)會失敗,在所有

測試運行的詳細信息窗口特別的原因包括,因爲它無法指出爲什麼測試失敗(下圖)的有用信息

test fail with no useful information

注意

  • 測試將通過如果我重新運行特定的測試,或從菜單運行所有測試測試>運行>所有測試
  • 這個問題oc小人我的機器和其他一些隨機的,而對於團隊的其他成員,代碼覆蓋率一代工作正常(100%檢驗合格)
  • 這個問題永遠不會發生在VS2010

編輯

添加代碼BoreholeRepositoryTest在行98

這只是一個測試的起點

enter image description here

+0

您的測試中可能存在競爭條件或耦合問題,只在某些情況下才會出現。這是不可能的。這些真正的單元測試(例如它們是完全隔離的)還是集成測試混合在一起? –

+0

嗨丹尼爾,那些只是單元測試,沒有集成測試。測試是完全獨立的(它們可以在vs2010下以任意順序運行,並且仍然通過) – HuyNA

+0

您可以發佈BoreholeRepositoryTest.cs的代碼(特別感興趣的是第98行)? @DanielMann很可能是正確的,因爲有一些競爭條件促成了這一點。 (例如,儘管沒有人期望共享資源,但資源可能會共享) – Lilshieste

回答

4

我發現我的問題的解決方案

我注意到QTAgent32_40.exe在測試運行過程隨機崩潰,導致那些尚未執行的測試失敗

的研究有點事後揭示了我的問題的根源

我正在使用xxx.testsettings文件來控制代碼覆蓋率結果。看起來,VS2013使用了一個更新的測試框架,它與testsettings文件不兼容。如果您使用.testsettings文件,MSTest測試框架將用於運行您的測試。這運行速度更慢,不允許您從第三方測試框架運行測試。

因此,解決方案是:擺脫良好的舊測試設置文件,並按照Microsoft的建議創建一個新的runsettings文件。

解決案例: