使用Linq到sql和server explorer,我映射到loginvalidation存储过程。所以我写下面的代码:
ClientReportingDataContext db = new ClientReportingDataContext();
var data = db.ADMIN_LoginValidation(login, password);
它会在以下行引发异常:
public ClientReportingDataContext() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["FeedsConnectionString"].ConnectionString, mappingSource)
抛出异常:
对象引用未设置为对象的实例。
我正在从单元测试类中调用此函数。我在web.config中填充了feedsconnectionstring。
我将web.config放在unit tests文件夹中,也放在debug和debug / bin下。不知道我错过了什么。
提前感谢任何建议。
答案 0 :(得分:2)
对于单元测试,
ConnectionStrings["FeedsConnectionString"].ConnectionString
不会从您的web.config
文件中读取;它将从测试运行器的应用程序配置文件中读取。因此,除非您将FeedsConnectionString
放在测试运行器的应用程序配置文件中,否则
ConnectionStrings["FeedsConnectionString"]
是null
,所以
ConnectionStrings["FeedsConnectionString"].ConnectionString
将抛出NullReferenceException
。
这就是为什么测试和应用程序配置文件不能很好地融合的原因。
您应该考虑以下事项:
public ClientReportingDataContext(string connectionString) :
base(connectionString, mappingSource)
然后在测试中注入连接字符串。