| 房產 | 價值觀 |
|---|---|
| 規則識別碼 | MSTEST0059 |
| 標題 | 不要同時使用平行化和 DoNotParallelize 屬性 |
| 類別 | Usage |
| 修正是破壞性或非破壞性 | Non-breaking |
| 預設啟用 | Yes |
| 默認嚴重性 | 警告 |
| 在版本 中引進 | 4.1.0 |
| 是否有程序代碼修正 | 否 |
原因
組件包含 ParallelizeAttribute 和 DoNotParallelizeAttribute 屬性。
規則描述
在組裝層級,ParallelizeAttribute 和 DoNotParallelizeAttribute 屬性是互斥的。 當這兩個屬性套用到同一個組件時,測試會依序執行。 這種衝突的配置顯示意圖不清,應通過為測試組選擇一種平行化策略來加以解決。
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] // Violation
[assembly: DoNotParallelize]
如何修正違規
根據你預期的平行化策略,移除其中一個相互衝突的屬性。
如果你想要平行執行:
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]
如果你想要順序執行:
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: DoNotParallelize]
如果你想在組件層級啟用平行化,但在特定類別或方法上停用,請在組件層級上應用Parallelize,並在類別或方法層級上應用DoNotParallelize。
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]
[DoNotParallelize]
[TestClass]
public class SequentialTests
{
[TestMethod]
public void Test1() { }
}
[TestClass]
public class ParallelTests
{
[TestMethod]
public void Test2() { }
[DoNotParallelize]
[TestMethod]
public void Test3() { }
}
隱藏警告的時機
請勿隱藏來自此規則的警告。 同時擁有這兩個屬性會造成測試設定的模糊,應該要解決。
隱藏警告
如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。
#pragma warning disable MSTEST0059
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0059
若要停用檔案、資料夾或項目的規則,請在none中將其嚴重性設為。
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0059.severity = none
如需詳細資訊,請參閱 如何隱藏程式碼分析警告。