Dotnet 6 統合テストの Deps ファイルが見つかりません 質問する

Dotnet 6 統合テストの Deps ファイルが見つかりません 質問する

始める前に、以下の提案をすべて試しましたが、どれも機能しませんでした。

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.WebApplicationFactory1.EnsureServer()、Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory 1.CreateDefaultClient(DelegatingHandler[] handlers) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.CreateDefaultClient(Uri baseAddress, DelegatingHandler[] handlers)、Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory 1.CreateClient 1.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.TestInvoker 1.<>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(Func1 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 テストの例

おすすめ記事