簡體   English   中英

在類中並行運行 NUnit 測試但不與其他類測試一起運行的方法?

[英]Way to run NUnit tests within class in parallel, but not run with other class tests?

我在Visual Studio Professional 2017使用NUnit 3.8

我在我的AssemblyInfo.cs文件中指定了[assembly: Parallelizable(ParallelScope.Fixtures)] 這使得默認行為類的測試可以在這個類中的其他測試並行不運行,但是它們可以在平行與其他類的測試運行。

我想知道是否有可能保持默認行為,但在逐個類的基礎上反轉邏輯。 我想讓特定類中的測試彼此並行運行,但不與其他類的測試並行運行。

拿下面的代碼。 如果我要運行下面的所有測試 - 我希望 TestClassA 中的所有測試並行執行,直到所有測試都完成,然后 TestClassB 中的所有測試將並行執行。

[NonParallelizable]
public class TestClassA
{
    [Test]
    [Parallelizable(ParallelScope.Children)]
    [TestCase(1, 1)]
    [TestCase(2, 2)]
    [TestCase(3, 3)]
    [TestCase(4, 4)]
    public void TestIntsA(int a, int b)
    {
        System.Threading.Thread.Sleep(1000);
        Assert.AreEqual(a, b);
    }        
}

[NonParallelizable]
public class TestClassB
{
    [Test]
    [Parallelizable(ParallelScope.Children)]
    [TestCase(1, 2)]
    [TestCase(2, 3)]
    [TestCase(3, 4)]
    [TestCase(4, 5)]
    public void TestIntsB(int a, int b)
    {
        System.Threading.Thread.Sleep(1000);
        Assert.AreEqual(a, b);
    }        
}

基於這個 NUnit 文檔(具體摘錄如下),我認為這是可能的。

具有並行方法的非並行類:
這些方法僅彼此並行運行,而不與任何其他類的測試方法並行運行。

但是,當我使用三個工作線程運行上述代碼時,前三個測試成功運行,然后不再啟動更多測試。 測試運行一直處於不確定狀態,直到我取消測試運行。

有什么建議?

您的代碼示例看起來正確。 有一些錯誤,例如https://github.com/nunit/nunit/issues/2438 ,導致 v3.8 中的測試用例並行化出現問題。 該團隊目前正在開發 v3.8.2,應該可以解決這些問題。

已經解決了許多問題 - 您可能希望嘗試使用最新版本的 master 來查看您的情況是否已修復:

https://ci.appveyor.com/project/CharliePoole/nunit/build/3.9.0-dev-04489/artifacts

暫無
暫無

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

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