我有以下设置:
- 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 .通过 NUnit GUI 运行我的测试时,现在可以正确使用 App.config。
显然,如果您使用的是 NUnit GUI 并通过“项目”>“添加程序集”添加程序集,它不会访问 app.config。但是,如果您通过将 dll 从 Windows 资源管理器拖到 NUnit GUI 来将程序集添加到 NUnit 项目,那么它将访问 app.config。
或者,您可以通过 GUI 添加程序集,然后进入 NUnit GUI > Project > Edit,并将 Configuration File Name 设置为配置文件的名称(VS 会将其设置为 name.of.your。 dll.config) 并将 Project Base 设置为项目的\bin\Debug 目录(这些是在拖入程序集与手动添加程序集时在后台完成的额外步骤。
关于c# - 从通过单元测试项目调用的类库访问 App.Config 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318423/