簡體   English   中英

NUnit - 防止 2 個特定類並行運行

[英]NUnit - prevent 2 specific classes from running in parallel

我有一個包含許多測試和許多測試類的測試項目。 它們中的大多數都可以毫無問題地並行運行,但是有 2 個特定的測試類,它們的測試訪問某個文件,因此不能並行運行。

我想如果我將[Parallelizable(ParallelScope.All)]放在所有其他類上並將[Parallelizable(ParallelScope.None)]放在這兩個類上,那么它應該是安全的,但是 AFAIU 這也意味着這兩個類不會與任何其他 class 並行運行,這不是我想要的,因為它不是最有效的解決方案。

有沒有其他更有效的方法來實現這一目標?

需要考慮的幾點:

  • [Parallelizable][NonParallelizable]可以在測試的多個級別上指定,較低級別的規范在一定程度上覆蓋較高的規范。
  • 重要的是要注意並行或非並行規范僅適用於它出現的級別和以下級別。 它不能覆蓋更高級別測試的設置。

對於您的情況,您可以使用非並行方法創建並行 class :此 class 中的方法按順序運行,通常在運行 class 一次性設置的同一線程上,但實際上可能與其他不相關的方法並行運行其他班級。 所以你的 class 可以是:

[Parallelizable(ParallelScope.All)]
public class MyClass1 
{
    [NonParallelizable]
    [Test]
    public void Test1()
    {
    }

    [NonParallelizable]
    [Test]
    public void Test2()
    {
    }
}

[Parallelizable(ParallelScope.All)]
public class MyClass2 //Another class in same Assembly
{
    //methods within this class will run in parallel with other 
    //class methods within same assembly except method Test1 and Test2 of MyClass1
} 

希望這可以幫助。 詳情在這里

NUnit 中沒有內置工具來執行此操作。

您可以在每個類的 OneTimeSetUp 中檢查文件的可用性,阻塞直到文件可用。 如果這些類同時入隊,這將占用一個線程,但您可以通過增加運行的並行級別來實現這一點。

暫無
暫無

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

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