NUnit没有拿起数据库连接字符串

我有一个项目( SLR )和一个Nunit测试项目( SLR.Tests

与数据库交互的方法的每个测试都失败了

“对象未设置为对象的实例”

在线上的例外

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["isvConnectionString"].ToString())) 

将连接字符串硬编码到新语句中可以按预期工作,并且在运行SLR项目的过程中调用该方法不会引发任何exception。

因此看起来NUnit没有拿起配置文件

我检查了SLR的Bin文件夹。 Tests文件夹包含SLR.DLLSLR.DLL.Config ,并且配置文件与SLR项目中的web.config文件相同。

Test项目安装了NUnit(V3.10.1)和NUit3TestAdapter(V3.10.0)。

关于这里发生了什么的任何想法?

测试项目需要app.cofig其中存在与正在测试的项目中类似的设置。

测试项目在单独的应用程序域中运行,因此他们需要自己的配置文件。

ConfigurationManager读取正在运行的当前应用程序域的配置文件,因此从正在测试的项目中复制所需的配置设置,以允许按预期执行测试。

此问题还公开了您的代码如何与直接使用ConfigurationManager实现问题紧密耦合,您应该考虑抽象配置访问,以便可以模拟/替换它们以允许单独完成unit testing。

 public interface IConfiguration { string AppSetting[string key] { get; } string ConnectionStrings[string name] { get; } }