NUnit没有拿起数据库连接字符串
我有一个项目( SLR )和一个Nunit测试项目( SLR.Tests )
与数据库交互的方法的每个测试都失败了
“对象未设置为对象的实例”
在线上的例外
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["isvConnectionString"].ToString()))
将连接字符串硬编码到新语句中可以按预期工作,并且在运行SLR项目的过程中调用该方法不会引发任何exception。
因此看起来NUnit没有拿起配置文件
我检查了SLR的Bin文件夹。 Tests文件夹包含SLR.DLL和SLR.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; } }