如何阻止 Resharper 8 与 NUnit 并行运行测试?

6
我在VS2013中使用Resharper 8进行测试,它与一个外部进程集成并重定向其输出。我不是寻求有关哪些内容可以作为单元测试的指导,因为我发现测试运行程序比控制台应用程序更好。
这个进程是一个数据库,因此我的SetUp和TearDown方法如果同时运行就会出现相反的问题,并且它们会互相干扰。
它们没有相互干扰,因为每当两个测试同时运行时,它们就会锁死。
最新版本的Resharper 7没有这个问题。
在Resharper > Options > Unit Testing中调整单元测试设置没有帮助。
2个回答

6

如何串行运行NUnit测试夹具? -- 已接近可行。

在我的测试夹具基类上(我总是在派生的SetUp方法开始时运行base.SetUp()),我添加了以下内容:

    [SetUp]
    protected virtual void SetUp()
    {
        FixtureHandle.Wait();
    }

    [TearDown]
    protected virtual void TearDown()
    {
        FixtureHandle.Set();
    }

FixtureHandle 是一个 ManualResetEvent。这个东西防止 NUnit 太过好用和快速。


以编程方式执行此操作是可行的,并且如果您在CI服务器上并行运行测试,它也可以正常工作,但这可能有点笨重:R#有一个选项(请参见我的答案)。 - Bart Read

-1
上面的回答来自@nik.shornikov,它可以工作,但在Resharper 2016.2及更高版本(以及可能也适用于早期版本),您可以通过一个选项来完成此操作,而无需编写任何代码。请参阅我的答案{{link1:有没有办法*防止*ReSharper并行运行程序集的单元测试?}}获取完整详细信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接