Core xUnit Test Project中的配置:找不到配置文件'appsettings.test.json'

时间:2019-11-09 21:38:29

标签: c# .net-core

我正在尝试在.NET Core中创建我的第一个单元测试项目。我需要弄清楚如何将appsettings.json配置放入该项目。

以下是投票率最高的回复:Read appsettings json values in .NET Core Test Project

我做了以下事情:

1)将appsettings.json文件从主项目复制到单元测试项目的根文件夹,并将其重命名为appsettings.test.json

2)使用以下代码:

public static IConfiguration InitConfiguration()
{
    var config = new ConfigurationBuilder()
        .AddJsonFile("appsettings.test.json")
        .Build();
        return config;
}

但这会返回此错误:

  

找不到配置文件'appsettings.test.json',它不是可选的。物理路径为“ C:\ Workspace \ my_project \ XUnitTestProject1 \ bin \ Debug \ netcoreapp2.2 \ appsettings.test.json”。

我不想将此文件深入嵌套到bin文件夹中。还有其他方法可以解决吗?还是我做错了什么?

这是大图景::

using Microsoft.Extensions.Options;
using Shared;
using Xunit;
using Microsoft.AspNetCore.Mvc;
using BusinessLogic;
using DataAccess.Models;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
using System;
using Microsoft.Extensions.Configuration;

namespace XUnitTestProject1
{
    public class Customers
    {
        private readonly IOptions<Configurations> _configurations;

        public Customers()
        {
            try
            {
                var config = new ConfigurationBuilder()
                    .AddJsonFile("appsettings.test.json")
                    .Build();

                 var config = InitConfiguration();
                 var clientId = config["Configutrations"]

                 _configurations = ??? // Still not sure how to do this.  Error before this point.

            }
            catch (Exception ex)
            {
                var m = ex.Message;
            }
        }

        [Fact]
        // all of the actual tests
}

此行发生错误:

var config = new ConfigurationBuilder....

1 个答案:

答案 0 :(得分:0)

appsettings.test.json文件的属性中,我必须将Copy to Output Directory设置为Copy if Newer

参考:https://weblog.west-wind.com/posts/2018/Feb/18/Accessing-Configuration-in-NET-Core-Test-Projects