代码之家  ›  专栏  ›  技术社区  ›  Cladoo

VSTS:Docker dotnet无法发布测试

  •  7
  • Cladoo  · 技术社区  · 6 年前

    在持续集成期间,我尝试在VST上发布我的单元测试,我使用docker,在执行发布任务时,我仍然得到以下错误,因此 dotnet测试 找不到命令。

    No test result files matching **\test-results.xml were found.
    

    如果我运行命令 docker compose运行web测试 在本地,将创建一个包含预期测试结果的测试结果文件夹。xml文件。

    我在VST上做错了什么?

    回购代码: Github

    我的文件夹体系结构:

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

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

    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"]
    

    docker编写。yml:

    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
    

    docker编写。推翻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
    

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

    2 回复  |  直到 6 年前
        1
  •  2
  •   eiximenis    6 年前

    您应该删除 RUN dotnet test Dockerfile 当您使用运行测试时 entrypoint 选项。 如果你有 运行dotnet测试 如果任何测试失败,整个构建都将失败,而不会生成任何测试结果文件。

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

    您是否尝试了一个成功的测试套件?

        2
  •  1
  •   starian chen-MSFT    6 年前

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

    enter image description here