我有一个像这样的Visual Studio项目结构:
Base (no connection string)
Data (connection string to Sql Server, references Base)
Logic (connection string to Sql Server, references Base & Data)
Base.Test (no connection string, references Base)
Logic.Test (connection string to Sql Server, references Base & Data & Base.Test)
当我使用Resharper分别对每个测试项目运行所有单元测试时,它们会通过。但是当我在所有项目中运行所有单元测试时,Base测试先通过,然后Logic测试失败,因为它无法找到连接字符串。
当我调试时,我可以看到它确实有一个连接字符串到SqlExpress,我收集的是由Entity Framework生成的,它似乎来自链上方的另一个项目?
如何让Logic.Test项目在全部运行时使用app.config中自己的连接字符串?
答案 0 :(得分:1)
我相信很久以前我遇到了类似的问题,我似乎记得我必须更改一些ReSharper设置(ReSharper
- > Tools
- > Options
| Tools
| Unit testing
)
我现在正在检查我的选项,并且我已经勾选了Shadow-copy并且已经勾选了单独的AppDomain。
你应该试一试。
修改强>:
似乎只需勾选单独的AppDomain 复选框即可,无论 Shadow-copy 设置如何。
答案 1 :(得分:0)
另一种解决方案是将app.config复制到Base.Test项目上。从概念上讲,该项目与数据库工作完全无关,但该解决方案在开发环境和TeamCity测试运行器中都有效。