始める前に、以下の提案をすべて試しましたが、どれも機能しませんでした。
ASP.NET Core と .NET Framework の統合テスト - 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 に設定されていることを確認してください。例: '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.WebApplicationFactory 1.CreateClient1.CreateClient(WebApplicationFactoryClientOptions options) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory
()、SubscriptionInfoApi.Tests.Integration.UnitTest1.Test1() (/repos/subscription-info-api/tests/SubscriptionInfoApi.Tests.Integration/UnitTest1.cs:行 14)、SubscriptionInfoApi.Tests.Integration.UnitTest1.Test1() (/repos/subscription-info-api/tests/SubscriptionInfoApi.Tests.Integration/UnitTest1.cs:行 16)、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) (/)/src/xunit.execution/Sdk/Frameworks/ExecutionTimer.cs: 行 48、Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code)、//src/xunit.core/Sdk/ExceptionAggregator.cs:行 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
これをさらにデバッグするにはどうすればいいのかわかりません。何かアイデアはありますか?
ベストアンサー1
おそらく、テスト ファイル内の Program の名前空間を間違ってターゲットにしているのでしょう (私もそうでした)。
必要なテスト プロジェクトで表示できるようにするには、Program.cs ファイルの末尾 (最後の行) に次のコードを追加する必要がありました。
public partial class Program { }
例はここにあります:最小限の API テストの例