我在一台16核机器上运行我的单元测试。在不使用并行化参数--workers=1和--workers=32时,我看不到经过的时间有什么不同。我想确认一下,NUnit确实在运行预期数量的同时测试,这样我就不会花时间在我的测试代码中寻找一个不存在的问题。
我在公共基类上有[Parallelizable] (默认范围,ParallelScope.Self)。它不是在任何其他类或方法上定义的。我正在通过Jenkins和本地命令行使用nunit3-console。
有什么方法可以判断测试是并行运行的吗?NUnit正在报告正确的工作线程数,但是没有报告说(例如)每个线程中运行了多少个测试。
Run Settings
ProcessModel: Multiple
RuntimeFramework: net-4.5
WorkDirectory: C:\Jenkins\workspace\myproject
NumberOfTestWorkers: 16我可以记录每个测试的开始时间和完成时间,然后手动检查是否有合理数量的重叠;是否有更简单和更可重复的方法来获得我想要的?
发布于 2015-12-03 03:23:55
我打开了--trace=Verbose,它生成一些文件。InternalTrace.<pid1>.log和InternalTrace.<pid2>.<dll_name>.log一起包含了对测试过程中发生的事情的详细描述。每个代理日志(日志文件名中有DLL名称的日志)非常清楚并行化的状态。
16:13:40.701 Debug [10] WorkItemDispatcher: Directly executing test1
16:13:47.506 Debug [10] WorkItemDispatcher: Directly executing test2
16:13:52.847 Debug [10] WorkItemDispatcher: Directly executing test3
16:13:58.922 Debug [10] WorkItemDispatcher: Directly executing test4
16:14:04.492 Debug [10] WorkItemDispatcher: Directly executing test5("param1")
16:14:09.720 Debug [10] WorkItemDispatcher: Directly executing test5("param2")
16:14:14.618 Debug [10] WorkItemDispatcher: Directly executing test5("param3")在我看来,第三个字段就像一个线程ID。所以我相信代理一次只运行一个测试,即使(我认为.)我已经使所有的测试都可以并行化,并且它们都在不同的测试装置中。
现在我得弄清楚我做错了什么,为什么他们没有并行运行.
发布于 2015-12-03 13:43:12
我可能弄错了,但在我看来,设置` `Parallelizable`‘参数不足以使测试并行运行。您还需要创建将运行测试的节点。因此,如果您使用Jenkins,您必须创建Jenkins奴隶,只有这样,您的测试才会并行运行。
,所以我想说的是,据我所知,不可能在一台PC.上并行运行测试。
如果有这样的可能性(在同一台机器上并行运行测试),那将是非常棒的,我很难听到它!
https://stackoverflow.com/questions/34053611
复制相似问题