Yaa*_*lis 6 c# asp.net configuration nunit app-config
我有以下设置:
业务逻辑库执行所有数据库访问.它通过访问System.Configuration.ConfigurationManager.ConnectionStrings从Web站点的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);
}
}
Run Code Online (Sandbox Code Playgroud)
当从网站项目调用它时,它可以工作.在单元测试中,conn变量永远不会设置为任何东西(我也尝试过使用System.Configuration.ConfigurationSettings.AppSettings,而不是使用相同的结果).当从NUnit GUI中调用时,我需要做什么才能使业务逻辑类库成功检索单元测试类库设置?
我刚刚在这里找到了解决方案.通过NUnit GUI运行我的测试时,现在正在正确使用App.config.
显然,如果您使用NUnit GUI并通过"项目">"添加程序集"添加程序集,则它不会访问app.config.但是,如果通过将dll从Windows资源管理器拖动到NUnit GUI中将程序集添加到NUnit项目,则它将访问app.config.
或者,您可以通过GUI添加程序集,然后进入NUnit GUI>项目>编辑,并将配置文件名称设置为配置文件的名称(VS将其设置为name.of.your.dll.config )并将Project Base设置为项目的\ bin\Debug目录(这些是在程序集中拖动并在手动添加它时在后台完成的额外步骤.
我建议更改设计,使您的业务逻辑层注入它们,而不是负责定位配置设置.
您的Web应用程序可以注入从Web.config文件中读取的设置,而您的单元测试可能会注入不同的设置(例如,连接字符串到测试数据库等)
| 归档时间: |
|
| 查看次数: |
29719 次 |
| 最近记录: |