MStest 使用多个配置文件为 Class 库抛出错误

MStest throwing errors for Class library using multiple config files

我创建了一个 class 库 MultipleConfigFiles,它有一个方法 getConfigData。此方法从配置文件中读取数据。

 public class Class1
    {
      public string getConfigData()
      {
        string configData = ConfigurationManager.AppSettings["key"].ToString();
        return configData;
      }
    }

现在我有一个控制台应用程序 ConsoleAppConfig,我在其中给出了 class library.In 主要方法的引用,我已经为库创建了一个对象 class 并调用了方法。

static void Main(string[] args)
        {
            Class1 c = new Class1();
            string data = c.getConfigData();
            Console.Write(data);    
        }

此控制台应用程序有 2 个不同的配置文件 dev.configprod.config。在主 App.config 文件中,我使用 configSource 来映射适当的配置文件。

<appSettings configSource="dev.config" />

Dev.config 文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="key" value="dev" />
</appSettings>

直到这里它工作 fine.That 是,当我 运行 控制台应用程序时,方法 returns dev.

现在,我已经为这个 class 库创建了一个 MSTest 项目。

public class Class1Tests
    {
        [TestMethod()]
        public void getConfigDataTest()
        {
            Class1 obj = new Class1();
            var result = obj.getConfigData();                
        }
    }

现在的问题是,当我运行这个测试时,它抛出一个错误说
“'System.NullReferenceException' 类型的异常发生在 MultipleConfigFiles.dll 中,但未在用户代码中处理。 附加信息:未将对象引用设置为对象的实例。"

由于配置文件位于 ConsoleApplication 中,该方法无法从那里读取应用程序设置变量。有什么方法可以全局维护配置文件,以便它们都单独使用,或者有什么更好的方法来处理这个问题。

任何输入都是appreciated.Thanks。

无需复制文件,您就可以 Link 现有单元测试项目中的文件。 您可以尝试与图片中提到的相同 Link (https://grantwinney.com/content/images/2014/04/AddExistingFileAsLink-002.png)

Google 这个术语 "Visual Studio - Add File As Link" 了解更多信息

图片来源:https://grantwinney.com