我有一个.Net 8.0 单元测试项目。该项目是包含应用程序项目的解决方案的一部分。
作为测试设置的一部分,使用 ConfigurationBuilder。
var configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddJsonFile("appsettings.json", optional: true);
var configuration = configurationBuilder.Build();
重复运行测试时,配置会从应用程序项目加载(不正确的)appSettings.json 文件,下次从测试项目加载(正确的)appSettings.json 文件,然后再次加载不正确的文件,然后再次加载正确的文件,等等
应用程序 appSettings.json 文件不包含测试项目中所需的设置。
我尝试了几种解决方案,让 ConfigurationBuilder 始终加载正确的设置文件。
以上方法均未能解决问题。 我的问题是:为什么 ConfigurationBuilder 在两个 appSettings.json 文件之间交替? 我怎样才能阻止它这样做?
我有几个问题
您的项目输出文件夹是否相同?如果是这样,您可以将测试 appsettings.json 替换为 appsettings.test.json 等。
测试项目.csproj
<ItemGroup>
<None Update="appsettings.test.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
AgentTest.cs
public class AgentTests : BaseTest
{
static IConfiguration Configuration {get; set;}
public AgentTests() : base(false)
{
}
[SetUp]
public void Setup()
{
Configuration = new ConfigurationBuilder().AddJsonFile("appsettings.test.json").Build();
}
[Test]
public async Task Can_Get_AgentById()
{
// Arrange
int agentId = 350;
IAgentRepository agentRepo = new AgentService(Configuration);
// Act
var result = await agentRepo.GetAgentById(agentId);
// Assert
Assert.That(result is not null);
}
}
我可以这样使用。
如果此答案不能解决您的问题,请告诉我更多详细信息。