我完全惊讶于为什么我的一个单元测试失败了。这是一个简单的测试,看看是否返回了正确的连接字符串。我的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>
这是我的简单单元测试,它始终抛出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);
}
}
答案 0 :(得分:5)
我的原始答案不适用于您的评论。
我建议检查一件事,然后;你的app.config
文件是否被移动到你的程序目录中,并被添加.config重命名为与程序相同的文件?
那么,program.exe
有program.exe.config
作为配置文件吗?`
看起来你在这里有一个Web应用程序;如果是这样,您的配置文件应为 web.config
而不是app.config
。然后,您应该使用WebConfigurationManager
命名空间中的System.Web.Configuration
。
答案 1 :(得分:0)
如果您的testdll是MyTests.dll,那么该子项目中的app.config将成为MyTests.dll.config。不幸的是,nunit想要“MyTests.config”(没有“.dll。”)
解决这个问题
现在您可以通过打开“MyTests.nunit”
来运行您的unittest