当前位置: 首页 > 知识库问答 >
问题:

Junit报告在gitlab上运行测试后不更新

沈英勋
2023-03-14
    stages:
      - build
      - test
    
    docker-build-master:
      image: docker:latest
      stage: build
      services:
        - docker:dind
      before_script:
        - docker login -u "xxx" -p "yyy" docker.io
      script:
        - docker build ./AutomaticTests --pull -t "dockerImage" 
        - docker image tag dockerImage xxx/dockerImage:0.0.1
        - docker push "xxx/dockerImage:0.0.1"
    
    test:
      image: docker:latest
      services:
        - docker:dind
      stage: test
      before_script:
        - docker login -u "xxx" -p "yyy" docker.io
      script: 
        - docker run "xxx/dockerImage:0.0.1"
      artifacts:
        when: always
        paths:
          - AutomaticTests/bin/Release/artifacts/test-result.xml
        reports:
          junit:
            - AutomaticTests/bin/Release/artifacts/test-result.xml

DockerFile:

    FROM mcr.microsoft.com/dotnet/core/sdk:2.1
    
    COPY /publish  /AutomaticTests
    WORKDIR /AutomaticTests
    RUN apt-get update -y
    RUN apt install unzip
    RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    RUN dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install
    RUN curl https://chromedriver.storage.googleapis.com/84.0.4147.30/chromedriver_linux64.zip -o /usr/local/bin/chromedriver
    RUN unzip -o /usr/local/bin/chromedriver -d /AutomaticTests
    RUN chmod 777 /AutomaticTests
    
    CMD dotnet vstest /Parallel AutomaticTests.dll --TestAdapterPath:. --logger:"nunit;LogFilePath=..\artifacts\test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"

共有1个答案

柳昊焱
2023-03-14

gitlab管道中使用docker-in-docker时,我也遇到了类似的问题。在容器中运行测试。因此,测试结果存储在“测试容器”中。但是,gitlab-ci路径引用的不是“测试中的容器”,而是您的docker-in-docker环境的外部容器。

您可以尝试通过如下方式将测试结果从映像直接复制到外部容器:

mkdir reports
docker cp $(docker create --rm DOCKER_IMAGE):/ABSOLUTE/FILEPATH/IN/DOCKER/CONTAINER reports/.

所以,在您的情况下是这样的(未经测试...!):

...

    test:
      image: docker:latest
      services:
        - docker:dind
      stage: test
      before_script:
        - docker login -u "xxx" -p "yyy" docker.io
      script: 
        - mkdir reports
        - docker cp $(docker create --rm xxx/dockerImage:0.0.1):/AutomaticTests/bin/Release/artifacts/test-result.xml reports/.
      artifacts:
        when: always
        reports:
          junit:
            - reports/test-result.xml
...
 类似资料:
  • 问题: TestNG正在运行所有172个测试,但是它只报告了81个测试运行,没有报告一些失败(实际上有两个测试失败,但只报告了一个)。 似乎未报告的测试是有什么方法可以让TestNG正确识别这些测试并正确报告它们的结果吗?

  • 我有Maven Java项目的JUnit XML报告,而不是源文件。我希望Sonarqube 4.5.7通过执行以下命令来发布这些报告:“mvn sonar:sonar”。 Sonarqube安装在远程服务器上,安装了java-plugin-3.8和其他插件。 我所有的JUnitXML报告都在一个名为“reports”的目录中。 pom。项目根目录上的xml如下所示: 当我执行“mvn声纳:声纳”

  • 我尝试在Eclipse Oxygo4.7上使用Java9。显然,我已经安装了Java9对marketplace氧气的支持。我无法让junit测试工作。我用两个类创建了简单的maven项目: null null 如何在Eclipse中使用Java9运行这个测试?

  • 我正试图利用Jenkins中的“发布JUnit测试结果报告”,但无法让它为我的android测试项目工作。我在Jenkins的android测试项目的设置基于以下指南:https://wiki.jenkins-ci.org/display/Jenkins/building+an+android+app+和+test+project 我希望有人能发布一个简单的逐步指南,说明如何从测试运行中获得JUn

  • 这与我自己的Runner和Filter类以及注释一起,意味着我可以在一个单独的类中运行一个单独的测试,如下所示: 这在Jenkins中也是非常好的,我也能够并行运行测试。我遇到的问题是,每个类的报告在每个方法运行后都会被覆盖。 例如,上面的命令将生成一个文件test-classwithtests.xml,其中包含关于TestMethod的结果和输出的信息。但是,如果我跑