[英]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.