VSTS:dotnet与Docker无法发布测试

时间:2018-03-26 13:00:28

标签: unit-testing docker .net-core docker-compose azure-devops

我尝试在持续集成期间在VSTS上发布我的单元测试,我使用docker,并且在播放发布任务时,我仍然会收到以下错误,因此 dotnet测试产生的xml文件命令无法找到。

web/
├── web/
│   └── web.csproj
│   └── Dockerfile
│       
├── web.test/
│  └── web.test.csproj
│       
└── web.sln
└── docker-compose.yml
└── docker-compose.override.yml

如果我在本地运行命令 docker-compose run web-tests ,则会创建一个包含预期的test-results.xml文件的tests-results文件夹。

我在VSTS上做错了什么?

代码回购:Github

我的文件夹架构:

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src 
COPY web.sln ./
COPY web/web.csproj web/
COPY web.test/web.test.csproj web.test/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/web
RUN dotnet build -c Release -o /app

FROM build as test
WORKDIR /src/web.test
#RUN dotnet test

FROM build AS publish
WORKDIR /src/web
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "web.dll"]

Dockerfile(EDIT删除额外的dotnet测试命令):

version: '3.4'
services:
  web:
    image: web
    build:
      context: .
      dockerfile: web/Dockerfile
  web-tests:
    image: web-tests
    build:
      context: .
      dockerfile: web/Dockerfile      
      target: test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests

搬运工-compose.yml:

version: '3.4'
services:
  web:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "80"
  web-tests:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "80"
    entrypoint:
      - dotnet
      - test
      - --logger
      - trx;LogFileName=/tests/test-results.xml

搬运工-compose.override.yml:

AllowPaging

我的两个VSTS任务 docker-compose run task publish tests task

2 个答案:

答案 0 :(得分:2)

在使用撰写文件中的RUN dotnet test选项运行测试时,应删除Dockerfile中的entrypoint。 如果您有RUN dotnet test且任何测试失败,整个构建将失败而不生成任何测试结果文件。

如果所有测试都通过,那么“发布测试结果”任务应该会成功(但请注意,您运行测试两次)。

您是否尝试过成功的测试套件?

答案 1 :(得分:1)

您需要取消选中Docker Compose任务的后台运行选项。

enter image description here