我有以下设置:
- ASP.net 3.5 网站项目
- 具有业务逻辑的 C# 类库
- 用于单元测试的 C# 类库
业务逻辑库完成所有数据库访问。它通过访问 System.Configuration.ConfigurationManager.ConnectionStrings 从网站的 web.config 文件获取连接字符串。当网站调用该库时,这可以正常工作,因为该库会查找调用者的配置。
我希望能够通过单元测试类库来测试我的业务逻辑。我已将 App.config 文件放在测试类库的根目录中。据我了解,当测试库调用属于业务逻辑库一部分的数据访问过程时,应该访问和使用测试库的 App.config 文件中的连接设置。但是,当我尝试运行单元测试时,我收到错误,表明测试库的 App.config 文件(和/或其内容)未成功访问。
我对配置属性的检索(从业务逻辑库内)如下所示:
public SqlConnection MainConnection {
get {
string conn = "";
try {
conn = System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
} catch {
// might be calling from test project. Need to reference app settings
conn = System.Configuration.ConfigurationManager.AppSettings["connString"];
}
return new SqlConnection(conn);
}
}
当从网站项目调用它时,它就可以工作。在单元测试中, conn 变量从未设置为任何内容(我也尝试过 System.Configuration.ConfigurationSettings.AppSettings,并使用而不是具有相同的结果)。当从 NUnit GUI 中调用业务逻辑类库时,我需要做什么才能成功检索单元测试类库设置?
我刚刚找到解决方案here http://web.archive.org/web/20100619012049/http://www.safnet.com/writing/tech/archives/2007/12/nunit_ignores_a.html。现在通过 NUnit GUI 运行测试时可以正确使用 App.config。
显然,如果您使用 NUnit GUI 并通过“项目”>“添加程序集”添加程序集,它不会访问 app.config。但是,如果您通过将 dll 从 Windows 资源管理器拖动到 NUnit GUI 中来将程序集添加到 NUnit 项目中,那么它将访问 app.config。
或者,您可以通过 GUI 添加程序集,然后进入 NUnit GUI > 项目 > 编辑,并将配置文件名设置为配置文件的名称(VS 会将其设置为 name.of.your.dll.config )并将项目库设置为项目的 \bin\Debug 目录(这些是当您拖入程序集而不是手动添加它时在后台完成的额外步骤。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)