在开始之前,我已经尝试了以下所有建议,但都没有奏效:
使用 .NET Framework 集成测试 ASP.NET Core - 找不到 deps.json
https://zimmergren.net/unable-to-find-deps-json-dotnet-azure-devops/
所以我正在尝试为 dotnet 6 编写一些集成测试。但是,我WebApplicationFactory
抛出了以下错误:
System.InvalidOperationException:找不到'/repos/subscription-info-api/tests/SubscriptionInfoApi.Tests.Integration/bin/Debug/net6.0/...
System.InvalidOperationException 找不到“/repos/subscription-info-api/tests/SubscriptionInfoApi.Tests.Integration/bin/Debug/net6.0/testhost.deps.json”。此文件是功能测试正常运行所必需的。您的源项目 bin 文件夹中应该有该文件的副本。如果不是这种情况,请确保在项目文件中将属性 PreserveCompilationContext 设置为 true。例如“真实”。要使功能测试正常工作,它们需要从构建输出文件夹运行,或者必须将应用程序输出目录中的 testhost.deps.json 文件复制到运行测试的文件夹中。此错误的一个常见原因是在测试运行时启用了卷影复制。在 Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory
1.EnsureDepsFile() at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory
1.EnsureServer() 在 Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.CreateDefaultClient(DelegatingHandler[] handlers) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory
1.CreateDefaultClient(Uri baseAddress, DelegatingHandler[] handlers) 在 Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.CreateClient(WebApplicationFactoryClientOptions options) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory
1.CreateClient() 在 SubscriptionInfoApi.Tests.Integration.UnitTest1 /repos/subscription-info-api/tests/SubscriptionInfoApi.Tests.Integration/UnitTest1.cs 中的 .Test1():/repos/subscription-info-api/ 中 SubscriptionInfoApi.Tests.Integration.UnitTest1.Test1() 的第 14 行tests/SubscriptionInfoApi.Tests.Integration/UnitTest1.cs:Xunit.Sdk.TestInvoker1.<>c__DisplayClass48_0.<<InvokeTestMethodAsync>b__1>d.MoveNext() in /_/src/xunit.execution/Sdk/Frameworks/Runners/TestInvoker.cs:line 264 --- End of stack trace from previous location --- at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func
1 asyncAction 的第 16 行)在 / /src/xunit.execution/Sdk/Frameworks/ExecutionTimer.cs:Xunit.Sdk.ExceptionAggregator.RunAsync 的第 48 行(Func`1 代码) 在//src/xunit.core/Sdk/ExceptionAggregator.cs:line 90
我的实际测试代码非常简单:
[Fact]
public async Task Test1()
{
await using var app = new WebApplicationFactory<Program>();
using var client = app.CreateClient();
var res = await (await client.GetAsync("/alive-test")).Content.ReadAsStringAsync();
Assert.Equal("Alive!", res);
}
根据建议,我确保Microsoft.AspNetCore.Mvc.Testing -> 6.0.0
在我的集成测试项目中直接引用。我还尝试了对.csproj
建议的文件的各种调整,但似乎没有任何效果。
我被困在试图进一步调试的事情上,有什么想法吗?