c# – 如何让xUnit运行一个Theory并行?
我有一个测试(理论),它很慢,有一堆测试用例.
所以我希望他们同时运行. 我创建了一个简单的例子: [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}",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 }; } } 运行测试的命令行: "packagesxunit.runner.console.2.0.0toolsxunit.console" "ProjectsxUnitTestxUnitTestbinDebugxUnitTest.dll" -parallel all > xUnitResult.txt 结果如下: 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 这是相当连续的. 解决方法
从xUnit 2.1开始,目前无法实现这一点.根据
parallelization docs,
文档没有明确说明的是: > xUnit中最小的“可并行化”单元是一个集合 通过扩展,不可能有并行化理论,因为理论不能分为多个类. 在您的情况下,这意味着您至少有两个选项: >重构您的代码,以便将抽出大量时间的内容抽象出去.例如,假设您必须运行一些业务逻辑,然后进行数据库调用.如果您可以将可测试的业务逻辑分成另一个类,则可以针对该类运行理论(不是并行,但是在<1毫秒内),并分别测试慢速数据访问代码.>如果您的测试用例足够少,只需为每个测试用例创建一个新类,并使用Fact而不是Theory.您甚至可以将它们全部放在一个文件中.它更冗长,你失去了使用理论的“酷”因素,但你会得到并行执行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby – ActiveRecord:当连接断开时如何自动重新连接到Pos
- 如何在C中添加多行注释时在Visual Studio 2010中启用自动星
- Dagger - 快速依赖注入器(for android and java) (2)
- ruby-on-rails – 如何RESTful更新has_and_belongs_to_many
- Objective-c类和swift类之间的NSNotificiation
- c# – 可以在ADO.NET中删除数据库或创建新数据库
- c – 处理2个模板参数的最佳方法?
- ReactiveCocoa学习教程笔记
- 关于正则表达式
- 通过源码编译安装PostgreSQL步骤及问题总结