c# - 如何获得使用 App.Config 的 c# 单元测试?

标签 c# unit-testing

我已将其简化为最简单的。

VS2019 MSTest 测试项目(.NET Core)模板

默认单元测试项目。

使用nuget安装System.Configuration.ConfigurationManager(5.0.0)

将app.config文件添加到项目中(add -> new Item -> select Application Configuration File>

将条目添加到配置文件。

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

调试下面的代码,k为null。

   using Microsoft.VisualStudio.TestTools.UnitTesting;
   using System.Configuration;

   namespace UnitTestProject1
   {
    [TestClass]
    public class UnitTest1
    {
    [TestMethod]
    public void TestMethod1()
    {
        var k = System.Configuration.ConfigurationManager.AppSettings["TestKey"];

    }
  }
 

如何让单元测试读取配置文件?

最佳答案

如果您将此行添加到您的 TestMethod,它会告诉您它期望使用的配置文件的名称是什么:

public void TestMethod1()
{
    string path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath;
    var k = ConfigurationManager.AppSettings["TestKey"];
}

当我运行它时,它调用文件“(path-to)\testhost.dll.config”,而不是“App.config”。所以我所做的就是将文件重命名为“testhost.dll.config”,将其生成操作更改为“内容”和“始终复制”,运行单元测试,它在 var k< 中为我提供了正确的值.

我无法解释为什么它会专门查找该文件名,但出于某种原因确实如此。

关于c# - 如何获得使用 App.Config 的 c# 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65332017/

相关文章:

c# - 在抽象类中使用泛型

c# - c#中的序列乘法

unit-testing - 单元测试自调用函数

java - JUnit 可以模拟 OutOfMemoryErrors 吗?

c# - 有没有办法在运行时获取构造函数参数的值

c# - 我无法访问我的 ApiController

android - 如何使用 Mockk 模拟和测试 RxJava/RxAndroid?

python - 对特定于实现的数据库使用情况进行单元测试

unit-testing - 如何在 Dart/Flutter 上的测试中导入测试实用程序文件

c# - .NET 中的表达式树 - 库?