运行 从 NUnit Runner 中的多个 TestProject 进行测试时,NUnit TestDirectory 错误

NUnit TestDirectory wrong when running tests from multiple TestProjects in NUnit Runner

我正在使用 VS 2013 和 NUnit。 我正在 运行在 Resharpers 的 TestRunner GUI 中进行我的测试 - 这个东西:

我有多个项目(Solution.Foo、Solution.Bar 等),并在 Solution.Foo.Tests、Solution.Bar.Tests 等中对每个项目进行测试

我在 Foo.Tests 中的一项测试正在访问位于 Solution.Foo.Tests 文件夹中的文件。

我使用 TestContext.CurrentContext.TestDirectory 来定位它,当我 运行 测试它时一切正常。 如果我 运行 Foo.Tests 中的整套测试(即单击 Solution.Foo。Runner GUI 中的测试和 运行),那么就可以了。 但是如果我 select 来自 Bar.Tests 的一个测试和我来自 Foo.Tests 的文件读取测试,那么它失败了,因为突然 TestDirectory 被设置为 [=35= 中的路径].

就好像 NUnit 在启动时设置 TestDirectory 一次 运行 测试集合,由第一个测试所在的位置决定,然后再也不会更新它。

知道发生了什么事以及如何解决它吗?

ReSharper 通过跨多个程序集共享 AppDomain 来优化速度。这样做的缺点是它会选择一个任意程序集作为主要程序集,这意味着目录可能是错误的(它也可能不会选择正确的 app.config)。

您可以在 ReSharper → 选项 → 单元测试中禁用优化,方法是选中 "Use separate AppDomain for each assembly with tests"。