我正在使用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中运行整套测试,(例如,在Runner GUI中点击Solution.Foo.Tests并运行),那就没关系了。
但是,如果我从Bar.Tests中选择一个测试,并从Foo.Tests中选择我的文件读取测试,那么它会失败,因为突然TestDirectory
被设置为Bar.Tests中的路径。
就好像NUnit在开始运行测试集合时设置TestDirectory
一次,由第一个测试的位置确定,然后再也不会更新它。
任何想法是什么以及如何解决它?
答案 0 :(得分:3)
ReSharper通过在多个程序集之间共享AppDomain来优化速度。这样做的缺点是,它将选择一个任意的程序集作为主要程序集,这意味着该目录可能是错误的(并且它也可能不会选择正确的app.config
。)
您可以在ReSharper→选项→单元测试中禁用优化,方法是选中"为每个具有测试的程序集使用单独的AppDomain"。