我正在尝试在.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....
答案 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