.net - Docketfile - 单元测试不适用于多个构建目标
问题描述
我有以下 docker 文件,它有多个构建目标,包括 .net 单元测试。
出于某种原因,它在构建过程中没有达到单元测试,但是如果我评论 testrunner 并测试构建目标点,它就可以工作。
任何的想法?
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/runtime:3.1 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY *.sln .
COPY ["Pokemon.API/*.csproj", "./Pokemon.API/"]
COPY ["Pokemon.Core/*.csproj", "./Pokemon.Core/"]
COPY ["Pokemon.Models/*.csproj", "./Pokemon.Models/"]
COPY ["Pokemon.Test/*.csproj", "./Pokemon.Test/"]
RUN dotnet restore
# copy full solution over
COPY . .
RUN dotnet build
# create a new build target called testrunner
FROM build AS testrunner
WORKDIR /src/Pokemon.Test
CMD ["dotnet", "test", "--logger:trx"]
# run the unit tests
FROM build AS test
WORKDIR /src/Pokemon.Test
RUN dotnet test --logger:trx
FROM build AS release
WORKDIR "/src/Pokemon.API"
RUN dotnet build "Pokemon.API.csproj" -c Release -o /app/build
FROM build AS publish
WORKDIR "/src/Pokemon.API"
RUN dotnet publish "Pokemon.API.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Pokemon.API.dll"]
如果我在 Docker 文件的下面一行注释,它会在构建期间成功运行单元测试
# create a new build target called testrunner
#FROM build AS testrunner
#WORKDIR /src/Pokemon.Test
#CMD ["dotnet", "test", "--logger:trx"]
# run the unit tests
#FROM build AS test
#WORKDIR /src/Pokemon.Test
RUN dotnet test --logger:trx
解决方案
执行时没有指定目标构建阶段docker build
。因此,默认情况下,它以要构建的最后阶段为目标。但是最后阶段不依赖于 testrunner 或测试阶段,因此它们都不会被构建。如果要显式运行其中一个测试阶段,可以指定--target
选项以针对特定阶段。例如:docker build -t pokemonapi:v1 -f Dockerfile --target test .
推荐阅读
- javascript - 用户在 prompt() 中输入文本;此文本保存在浏览器中,或更改 html 文件本身(首选)
- quickbase - 在 QuickBase 中,有没有办法让一个字段具有唯一的用户访问权限?
- tailwind-css - 如何在框中包含标题作为
- google-bigquery - BigQuery SQL - 向现有记录添加新记录
- c# - 向 ID 令牌 OpenID 添加自定义声明
- reactjs - 如何根据 id 是否匹配 websocket 对象的 id 有条件地呈现列表项
- python - 选择 Python 数据框中的特定单元格(使用 iloc?)
- bash - 在bash中不能乘以负数
- azure - 虚拟机的 Azure Powershell 问题
- javascript - 在 Firefox 中使用 Javascript 检测键盘布局