Tôi đã có một bài kiểm tra (Lý thuyết) mà là chậm và một loạt các trường hợp thử nghiệm cho nó. Vì vậy, tôi muốn chúng chạy đồng thời.Làm thế nào để làm cho xUnit chạy một lý thuyết song song?
tôi đã tạo ra một ví dụ đơn giản:
[Theory]
[MyTestData]
public void MyTheory(int num, int sleep)
{
Console.WriteLine("{0:HH:mm:ss.ffff} - Starting {1} - Sleeping {2}", DateTime.Now, num, sleep);
Thread.Sleep(sleep);
Console.WriteLine("{0:HH:mm:ss.ffff} - Finished {1} - Sleeping {2}", DateTime.Now, num, sleep);
}
[AttributeUsage(AttributeTargets.Method)]
public class MyTestDataAttribute : DataAttribute
{
public override IEnumerable<object[]> GetData(MethodInfo testMethod)
{
yield return new object[2] { 1, 5000 };
yield return new object[2] { 2, 2000 };
yield return new object[2] { 3, 4000 };
}
}
Các dòng lệnh để chạy thử nghiệm:
"\packages\xunit.runner.console.2.0.0\tools\xunit.console" "\Projects\xUnitTest\xUnitTest\bin\Debug\xUnitTest.dll" -parallel all > xUnitResult.txt
Và kết quả:
xUnit.net console test runner(64-bit.NET 4.0.30319.42000)
Copyright(C) 2015 Outercurve Foundation.
Discovering: xUnitTest
Discovered: xUnitTest
Starting: xUnitTest
21:55:39.0449 - Starting 2 - Sleeping 2000
21:55:41.0627 - Finished 2 - Sleeping 2000
21:55:41.0783 - Starting 1 - Sleeping 5000
21:55:46.0892 - Finished 1 - Sleeping 5000
21:55:46.0892 - Starting 3 - Sleeping 4000
21:55:50.0989 - Finished 3 - Sleeping 4000
Finished: xUnitTest
=== TEST EXECUTION SUMMARY ===
xUnitTest Total: 3, Errors: 0, Failed: 0, Skipped: 0, Time: 11,137s
Đó là khá nối tiếp. Tôi chắc chắn rằng nó có thể làm cho nó song song.
https://xunit.github.io/docs/running-tests-in-parallel.html –
Btw, '[MemberData (nameof (MyTestData))]' sạch hơn việc tạo thuộc tính tùy chỉnh, theo ý kiến của tôi. –