Я создал простой проект модульного теста для чтения файла app.config. Целевой фреймворк - Core 2.0. Я также создал консольное приложение Core 2.0 для проверки работоспособности, чтобы убедиться, что я не делал ничего странного (такой же тест прошел, как и ожидалось, в модульном тестовом проекте.NET 4.6.1).
Консольное приложение хорошо читает app.config, но метод модульного тестирования не работает, и я не могу понять, почему. Оба используют копию одного и того же app.config (не добавлен как ссылка), и оба имеют установленный пакет NuGet System.Configuration.ConfigurationManager v4.4.1.
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Test1" value ="This is test 1."/>
<add key="Test2" value ="42"/>
<add key="Test3" value ="-42"/>
<add key="Test4" value="true"/>
<add key="Test5" value="false"/>
<add key="Test6" value ="101.101"/>
<add key="Test7" value ="-1.2345"/>
</appSettings>
</configuration>
Unit тест
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Configuration;
namespace ConfigTest
{
[TestClass]
public class UnitTest1
{
[TestMethod()]
public void ConfigTest()
{
foreach (string s in ConfigurationManager.AppSettings.AllKeys)
{
System.Console.WriteLine(s);
System.Diagnostics.Debug.WriteLine(s);
}
//AllKeys.Length is 0? Should be 7...
Assert.IsTrue(ConfigurationManager.AppSettings.AllKeys.Length == 7);
}
}
}
Консольное приложение
using System;
using System.Configuration;
namespace ConfigTestApp
{
class Program
{
static void Main(string[] args)
{
foreach (string s in ConfigurationManager.AppSettings.AllKeys)
{
Console.WriteLine(s);
System.Diagnostics.Debug.WriteLine(s);
}
//Outputs 7 as expected
Console.WriteLine(ConfigurationManager.AppSettings.AllKeys.Length);
}
}
}
Учитывая, что я все еще довольно новичок во всем мире.NET Core, я делаю здесь что-то совершенно неправильное? Я просто чувствую себя сумасшедшим в данный момент...