配置管理器名称值集合从单元测试返回 null 或空集合



我在Visual Studio中有两个项目,核心项目是Windows Service Executable,另一个是单元测试项目。

核心项目有两个原始文件像这样分解

文件1.cs:

using static Proj.ConfigHelper;
namespace Proj
{
class MyClass
{
(lots of code)
}
}

File2.cs 看起来像这样。

namespace Proj
{
static class ConfigHelper
{
public static NameValueCollection AppSettings { get { return ConfigurationManager.AppSettings; } }
public static NameValueCollection CustomSection { get { return ConfigurationManager.GetSection("CustomSection") as NameValueCollection; } }
}
}

这两个类都是内部的,并且通过 InternalsVisibleToAttribute 对单元测试项目可见。

在 UnitTest 项目(该项目是同一解决方案中的一个离散项目(中(因此它有自己的 app.config(,调用 ConfigHelper.AppSettings 会产生一个 0 项集合,调用 ConfigHelper.CustomSection 会导致 null。如果我尝试对 File1 中的方法进行单元测试.cs该方法取决于这些设置,它们将作为默认值运行,就好像它们根本没有配置一样。我不太明白为什么会这样。谁能帮助我了解我做错了什么?似乎 ConfigHelper 没有为其自己的项目加载 App.Config。

Windows 服务项目的 app.config 设置为">

始终复制",单元测试项目的 app.config 设置为"从不复制">

测试将使用自己的配置,因此您需要镜像它。有一些工作变通方法:单元测试项目是否可以加载目标应用程序的 app.config 文件?

最新更新