簡體   English   中英

分別運行時,三個單元測試通過,而一起運行時,只有一個通過

[英]Three Unit tests pass when run separately, only one passes when run together

我有三個測試, FunnyCarSteps.csCarLotMaxSteps.csCarTypeSteps.cs 當運行seperatley時,它們全部通過,但是一起運行時,僅CarLotMaxSteps通過。

CarTypeSteps.cs在第49行失敗,使用lambda方法,沒有可用的源錯誤。 FunnyCarSteps.cs在第19行失敗,索引超出范圍錯誤。

我是單元測試的新手,不了解發生了什么。

任何幫助是極大的贊賞。

由於Program.Mainstatic ,因此您的CarList可能也是靜態的。 NUnit並行運行測試,因此每個測試幾乎同時運行,並且每個清除列表並同時添加到列表中。

這就是為什么您的測試可以正常運行,但同時運行會失敗的原因。 一個啟動並開始測試,然后第二個出現並更改第一個測試正在使用的數據。

您需要從Program除main之外的所有內容中刪除static。 理想情況下,您應該將所有汽車清單代碼重構為新的非靜態類。 程序用於運行您的程序,它與汽車無關。 您應該在Main中創建CarLot(或任何類)類並執行它,而不是向Program添加屬性。

另一個選擇是將屬性[Parallelizable(ParallelScope.None)]到每個測試類。 這將導致它們一次運行一次。 這將解決您的測試問題,但不能解決以下事實:除了簡單的練習之外,您的代碼是不正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM