我已安装最新的NUnit(3.2.0),并使我所有的测试并行运行。这可能看起来是期望的行为,但实际上它破坏了我的一些测试。我在
此外,我尝试添加了以下属性:
有人知道如何改变这种行为吗?
P.S. 我使用ReSharper运行它,但也尝试了MSVS插件。
UPD:我正在使用MVVM Light
我检查了不同测试中的线程ID,它们都不同。
UPD2:来自文档的摘录:
"NUnit 3.0框架可以在一个程序集内并行运行测试。这是与引擎并行测试执行完全独立的设施,尽管可以在同一测试运行中使用两者。
默认情况下不会进行任何并行执行。使用属性指示哪些测试可以并行运行以及它们与其他测试的关系。"
如果这并不意味着除非明确指定,否则不应该并行运行程序集内的测试,则表示什么?为什么
UPD3:问题的答案可能在下面找到,但如果您被
[OneTimeSetUp]
中有一些依赖于线程的初始化,似乎我无法强制NUnit按顺序运行我的测试。我阅读了文档,其中说明默认情况下不会并行运行测试,但实际上它们是会并行运行的!此外,我尝试添加了以下属性:
[assembly: Parallelizable(ParallelScope.None)]
- 没有效果。有人知道如何改变这种行为吗?
P.S. 我使用ReSharper运行它,但也尝试了MSVS插件。
UPD:我正在使用MVVM Light
DispatcherHelper.Initialize()
(在[OneTimeSetUp]
内)存储稍后由几个测试使用的调度程序对象。如果线程不同(在测试和设置方法之间),则正在测试的操作将异步执行且我的测试失败。我检查了不同测试中的线程ID,它们都不同。
UPD2:来自文档的摘录:
"NUnit 3.0框架可以在一个程序集内并行运行测试。这是与引擎并行测试执行完全独立的设施,尽管可以在同一测试运行中使用两者。
默认情况下不会进行任何并行执行。使用属性指示哪些测试可以并行运行以及它们与其他测试的关系。"
如果这并不意味着除非明确指定,否则不应该并行运行程序集内的测试,则表示什么?为什么
[assembly: Parallelizable(ParallelScope.None)]
对测试的并行执行没有影响?UPD3:问题的答案可能在下面找到,但如果您被
DispatcherHelper.Initialize()
卡住(就像我一样),您只需要从OneTimeSetUp
中删除此初始化,并将以下行放入每个使用调度程序的测试中:DispatcherHelper.Reset();
DispatcherHelper.Initialize();