在NUnit Runner中从多个TestProjects运行测试时,NUnit TestDirectory出错

时间:2015-11-05 08:30:05

标签: nunit resharper

我正在使用VS 2013和NUnit。 我在Resharpers的TestRunner GUI中运行我的测试 - 这件事:enter image description here

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

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

我使用TestContext.CurrentContext.TestDirectory找到它,当我运行该测试时,一切正常。 如果我在Foo.Tests中运行整套测试,(例如,在Runner GUI中点击Solution.Foo.Tests并运行),那就没关系了。 但是,如果我从Bar.Tests中选择一个测试,并从Foo.Tests中选择我的文件读取测试,那么它会失败,因为突然TestDirectory被设置为Bar.Tests中的路径。

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

任何想法是什么以及如何解决它?

1 个答案:

答案 0 :(得分:3)

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

您可以在ReSharper→选项→单元测试中禁用优化,方法是选中"为每个具有测试的程序集使用单独的AppDomain"。