我完全惊讶于为什么我的一个单元测试失败了.这是一个简单的测试,看看是否返回了正确的连接字符串.我的App.config看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation defaultLanguage="c#" debug="true" />
</system.web>
<connectionStrings>
<add name="DbConnectionString" connectionString="Test_HighOnCoding_Db" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这是我的简单单元测试,总是抛出null异常:
[TestFixture]
public class when_retrieving_database_name_from_config
{
[Test]
public void should_get_the_correct_database_name()
{
var dbName = ConfigurationManager.ConnectionStrings["DbConnectionString"].ConnectionString;
// dbName is always null
Assert.AreEqual("Test_HighOnCoding_Db",dbName);
}
}
Run Code Online (Sandbox Code Playgroud)
我的原始答案不适用于您的评论.
那么我建议检查一件事; 您的app.config文件是否被移动到您的程序目录中,并被重命名为与程序相同,并添加了.config?
那么,program.exe有program.exe.config配置文件吗?`
看起来你在这里有一个Web应用程序; 如果是这样,您的配置文件应该是web.config而不是app.config.然后,你应该使用WebConfigurationManager从System.Web.Configuration命名空间.