.net 5到.net 6的迁移破坏了docker中的集成测试,在本地工作正常



在尝试从。net 5迁移到。net 6时,当我做docker构建和运行时,我得到以下错误。

它在。net 5 VS +的docker中工作得很好。它在。net 6 VS中工作得很好,但在docker中不能工作。

我做过的事情:

  1. 更新框架到。net 6
  2. 更新docker以使用。net 6
  3. 更新包到6.*

我使用的图片:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base

FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS tests

得到的错误如下:

[xUnit.net 00:00:01.87]     XXXApi.IntegrationTests.Tests.AssetTests.GivenNoData_WhenGetAllAssets_ReturnEmptyList [FAIL]
Failed XXXApi.IntegrationTests.Tests.AssetTests.GivenNoData_WhenGetAllAssets_ReturnEmptyList [1 ms]
Error Message:
System.IO.DirectoryNotFoundException : /src/XXXApi/
Stack Trace:
at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root, ExclusionFilters filters)
at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root)
at Microsoft.Extensions.Hosting.HostBuilder.CreateHostingEnvironment()
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.CreateHost(IHostBuilder builder)
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.ConfigureHostBuilder(IHostBuilder hostBuilder)
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.EnsureServer()
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.get_Services()
at XXXApi.IntegrationTests.Tests.BaseTests..ctor(CustomWebApplicationFactory`1 factory) in /src/XXXApi.IntegrationTests/Tests/BaseTests.cs:line 24
at XXXApi.IntegrationTests.Tests.AssetTests..ctor(CustomWebApplicationFactory`1 factory) in /src/XXXApi.IntegrationTests/Tests/AssetTests.cs:line 12
Results File: /src/TestResults/testresults.trx

由于WebApplicationFactory在。net 6中的"缺乏",集成测试发生了一些变化。的创业公司。按照这里的新说明:https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-6.0#basic-tests-with-the-default-webapplicationfactory

此外,尝试将丢失的项目输出复制到测试层COPY --from=build /out ./XXXApi/

Rregards

最新更新