Gitlab未显示dotnet的JUnit测试摘要

时间:2020-03-26 22:56:11

标签: .net junit gitlab gitlab-ci gitlab-ci-runner

我尝试为dotnet项目配置JUnit test reports。我想在Gitlab中查看测试摘要。官方文档中提供了example project。我使用Windows gitlab运行程序。但是我从未在gitlab上看到任何测试摘要,但是工件文件可用。我们使用GitLab Enterprise Edition 12.8.7-ee

Missing Test Link

我的 .gitlab-ci.yml

Build:
  stage: build
  script: 
    - 'dotnet restore'
    - 'dotnet build'    

Test:
  stage: test
  script: 
    - 'dotnet test --test-adapter-path:. --logger:"junit;LogFilePath=..\artifacts\{assembly}-test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"'
  artifacts:
    when: always
    paths: 
     - ./**/*test-result.xml
    reports:
      junit: 
       - ./**/*test-result.xml

我的跑步者的输出

 Running with gitlab-runner 12.9.0 (4c96e5ad)
   on GITLAB-RUNNER1 QJg4XZun
Preparing the "shell" executor
00:00
 Using Shell executor...
Preparing environment
00:03
 Running on GITLAB-RUNNER1...
Getting source from Git repository
00:05
 Fetching changes with git depth set to 50...
 Reinitialized existing Git repository in C:/GitLab-Runner/builds/QJg4XZun/0/test/Test.BuildCheck2/.git/
 Checking out 5bde6010 as master...
 Removing UnitTestProject1/bin/
 Removing UnitTestProject1/obj/
 Removing UnitTestProject2/bin/
 Removing UnitTestProject2/obj/
 git-lfs/2.10.0 (GitHub; windows amd64; go 1.12.7; git a526ba6b)
 Skipping Git submodules setup
Restoring cache
00:02
Downloading artifacts
00:02
Running before_script and script
00:15
 $ dotnet test --test-adapter-path:. --logger:"junit;LogFilePath=..\artifacts\{assembly}-test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"
 Test run for C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\bin\Debug\netcoreapp3.0\UnitTestProject2.dll(.NETCoreApp,Version=v3.0)
 Test run for C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll(.NETCoreApp,Version=v3.0)
 Microsoft (R) Test Execution Command Line Tool Version 16.5.0
 Copyright (c) Microsoft Corporation.  All rights reserved.
 Microsoft (R) Test Execution Command Line Tool Version 16.5.0
 Copyright (c) Microsoft Corporation.  All rights reserved.
 Starting test execution, please wait...
 Starting test execution, please wait...
 JunitXML Logger: The provided configuration item 'TargetFramework' is not valid and will be ignored. Note, names are case sensitive.
 JunitXML Logger: The provided configuration item 'TargetFramework' is not valid and will be ignored. Note, names are case sensitive.
 A total of 1 test files matched the specified pattern.
 A total of 1 test files matched the specified pattern.
 SetUp failed for test fixture UnitTestProject1.FailingOneTimeSetUp
 System.InvalidOperationException : Operation is not valid due to the current state of the object.
    at UnitTestProject1.FailingOneTimeSetUp.OneTimeSetUp() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 145
 SetUp failed for test fixture UnitTestProject2.FailingOneTimeSetUp
 System.InvalidOperationException : Operation is not valid due to the current state of the object.
    at UnitTestProject2.FailingOneTimeSetUp.OneTimeSetUp() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\UnitTests1.cs:line 107
 TearDown failed for test fixture UnitTestProject2.FailingOneTimeTearDown
 TearDown : System.InvalidOperationException : Operation is not valid due to the current state of the object.
 TearDown failed for test fixture UnitTestProject1.FailingOneTimeTearDown
 --TearDown
    at UnitTestProject2.FailingOneTimeTearDown.OneTimeTearDown() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\UnitTests1.cs:line 152
 TearDown : System.InvalidOperationException : Operation is not valid due to the current state of the object.
 --TearDown
    at UnitTestProject1.FailingOneTimeTearDown.OneTimeTearDown() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 190
   X TestA [< 1ms]
   Error Message:
    OneTimeSetUp: System.InvalidOperationException : Operation is not valid due to the current state of the object.
   X TestC [2ms]
   Error Message:
    TearDown : System.InvalidOperationException : Operation is not valid due to the current state of the object.
   Stack Trace:
   --TearDown
    at UnitTestProject1.FailingTearDown.TearDown() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 175
   X TestB [1ms]
   Error Message:
    System.InvalidOperationException : Operation is not valid due to the current state of the object.
   Stack Trace:
      at UnitTestProject1.FailingTestSetup.SetUp() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 160
   X   X TestData(2,"A") [59ms]
 TestA [< 1ms]
   Error Message:
      failing for second case
   Expected: not equal to 2
   But was:  2
   Stack Trace:
      at UnitTestProject1.ParametrizedTestCases.TestData(Int32 x, String s) in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 225
   Error Message:
    OneTimeSetUp: System.InvalidOperationException : Operation is not valid due to the current state of the object.
   X TestC [2ms]
   Error Message:
    TearDown : System.InvalidOperationException : Operation is not valid due to the current state of the object.
   Stack Trace:
   --TearDown
    at UnitTestProject2.FailingTearDown.TearDown() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\UnitTests1.cs:line 137
   X TestB [1ms]
   Error Message:
    System.InvalidOperationException : Operation is not valid due to the current state of the object.
   Stack Trace:
      at UnitTestProject2.FailingTestSetup.SetUp() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\UnitTests1.cs:line 122
   X TestData(2,"A") [59ms]
   Error Message:
      failing for second case
   Expected: not equal to 2
   But was:  2
   Stack Trace:
      at UnitTestProject2.ParametrizedTestCases.TestData(Int32 x, String s) in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\UnitTests1.cs:line 187
   X TestData(2,"B") [1ms]
   Error Message:
      failing for second case
   Expected: not equal to 2
   But was:  2
   Stack Trace:
      at UnitTestProject1.ParametrizedTestCases.TestData(Int32 x, String s) in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 225
   ! InconclusiveTest [1ms]
   X FailTest11 [2ms]
   Error Message:
      Expected: False
   But was:  True
   Stack Trace:
      at UnitTestProject1.UnitTest1.FailTest11() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 20
   ! Ignored [< 1ms]
   ! Inconclusive [< 1ms]
   ! ExplicitTest [< 1ms]
   X FailTest22 [3ms]
   Error Message:
      Expected: False
   But was:  True
   Stack Trace:
      at UnitTestProject1.UnitTest2.FailTest22() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 87
   ! IgnoredTest [< 1ms]
   ! Inconclusive [1ms]
   X TestData(2,"B") [1ms]
   Error Message:
      failing for second case
   Expected: not equal to 2
   But was:  2
   Stack Trace:
      at UnitTestProject2.ParametrizedTestCases.TestData(Int32 x, String s) in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\UnitTests1.cs:line 187
   ! InconclusiveTest [1ms]
   X FailTest11 [1ms]
   Error Message:
      Expected: False
   But was:  True
   Stack Trace:
      at UnitTestProject2.UnitTest1.FailTest11() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\UnitTests1.cs:line 20
   ! Ignored [< 1ms]
   ! Inconclusive [< 1ms]
   ! ExplicitTest [< 1ms]
   X FailTest22 [2ms]
   Error Message:
      Expected: False
   But was:  True
   Stack Trace:
      at UnitTestProject2.UnitTest2.FailTest22() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject2\UnitTests1.cs:line 49
   ! IgnoredTest [< 1ms]
   ! Inconclusive [< 1ms]
   ! WarningTest [7ms]
   ! WarningTest [< 1ms]
 JunitXML Logger - Results File: C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\artifacts\UnitTestProject2-test-result.xml
 Test Run Failed.
 Total tests: 23
      Passed: 9
      Failed: 7
     Skipped: 3
 JunitXML Logger - Results File: C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\artifacts\UnitTestProject1-test-result.xml
  Total time: 5.8282 Seconds
 Test Run Failed.
 Total tests: 29
      Passed: 15
      Failed: 7
     Skipped: 3
  Total time: 5.8232 Seconds
Uploading artifacts for failed job
00:03
 Version:      12.9.0
 Git revision: 4c96e5ad
 Git branch:   12-9-stable
 GO version:   go1.13.8
 Built:        2020-03-20T13:02:39+0000
 OS/Arch:      windows/amd64
 Uploading artifacts...
 Runtime platform                                    arch=amd64 os=windows pid=7076 revision=4c96e5ad version=12.9.0
 ./**/*test-result.xml: found 2 matching files      
 WARNING: Failed to load system CertPool: crypto/x509: system root pool is not available on Windows 
 Uploading artifacts to coordinator... ok            id=305 responseStatus=201 Created token=yfvJrYQk
 Version:      12.9.0
 Git revision: 4c96e5ad
 Git branch:   12-9-stable
 GO version:   go1.13.8
 Built:        2020-03-20T13:02:39+0000
 OS/Arch:      windows/amd64
 Uploading artifacts...
 Runtime platform                                    arch=amd64 os=windows pid=2140 revision=4c96e5ad version=12.9.0
 ./**/*test-result.xml: found 2 matching files      
 WARNING: Failed to load system CertPool: crypto/x509: system root pool is not available on Windows 
 Uploading artifacts to coordinator... ok            id=305 responseStatus=201 Created token=yfvJrYQk
 ERROR: Job failed: exit status 1

UnitTestProject1-test-result.xml

<?xml version="1.0" encoding="utf-8"?>
<testsuites name="UnitTestProject1.dll" tests="29" failures="7" time="0.5388019999999999">
  <testsuite name="UnitTestProject1.dll" tests="29" skipped="3" failures="7" errors="0" time="0.5388019999999999" timestamp="2020-03-26T 22:34:41Z" hostname="executor://nunit3testexecutor/">
    <testcase classname="UnitTestProject1.FailingOneTimeSetUp" name="FailingOneTimeSetUp.TestA" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="1E-07">
      <failure type="failure" message="OneTimeSetUp: System.InvalidOperationException : Operation is not valid due to the current state of the object.">OneTimeSetUp: System.InvalidOperationException : Operation is not valid due to the current state of the object.
Stack Trace:

</failure>
    </testcase>
    <testcase classname="UnitTestProject1.FailingOneTimeTearDown" name="FailingOneTimeTearDown.TestD" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.004678" />
    <testcase classname="UnitTestProject1.FailingTearDown" name="FailingTearDown.TestC" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.002157">
      <failure type="failure" message="TearDown : System.InvalidOperationException : Operation is not valid due to the current state of the object.">TearDown : System.InvalidOperationException : Operation is not valid due to the current state of the object.
Stack Trace:
--TearDown
   at UnitTestProject1.FailingTearDown.TearDown() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 175
</failure>
    </testcase>
    <testcase classname="UnitTestProject1.FailingTestSetup" name="FailingTestSetup.TestB" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.001106">
      <failure type="failure" message="System.InvalidOperationException : Operation is not valid due to the current state of the object.">System.InvalidOperationException : Operation is not valid due to the current state of the object.
Stack Trace:
   at UnitTestProject1.FailingTestSetup.SetUp() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 160
</failure>
    </testcase>
    <testcase classname="UnitTestProject1.ParametrizedFixture(&quot;Answer&quot;,42)" name="ParametrizedFixture(&quot;Answer&quot;,42).TestE" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000121" />
    <testcase classname="UnitTestProject1.ParametrizedFixture(&quot;Question&quot;,1)" name="ParametrizedFixture(&quot;Question&quot;,1).TestE" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="4.8E-05" />
    <testcase classname="UnitTestProject1.ParametrizedTestCases" name="ParametrizedTestCases.TestData(1,&quot;A&quot;)" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.018036" />
    <testcase classname="UnitTestProject1.ParametrizedTestCases" name="ParametrizedTestCases.TestData(1,&quot;B&quot;)" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000182" />
    <testcase classname="UnitTestProject1.ParametrizedTestCases" name="ParametrizedTestCases.TestData(2,&quot;A&quot;)" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.059189">
      <failure type="failure" message="  failing for second case&#xD;&#xA;  Expected: not equal to 2&#xD;&#xA;  But was:  2&#xD;&#xA;">  failing for second case
  Expected: not equal to 2
  But was:  2

Stack Trace:
   at UnitTestProject1.ParametrizedTestCases.TestData(Int32 x, String s) in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 225

</failure>
    </testcase>
    <testcase classname="UnitTestProject1.ParametrizedTestCases" name="ParametrizedTestCases.TestData(2,&quot;B&quot;)" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.001695">
      <failure type="failure" message="  failing for second case&#xD;&#xA;  Expected: not equal to 2&#xD;&#xA;  But was:  2&#xD;&#xA;">  failing for second case
  Expected: not equal to 2
  But was:  2

Stack Trace:
   at UnitTestProject1.ParametrizedTestCases.TestData(Int32 x, String s) in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 225

</failure>
    </testcase>
    <testcase classname="UnitTestProject1.SuccessAndInconclusiveFixture" name="SuccessAndInconclusiveFixture.InconclusiveTest" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.001204" />
    <testcase classname="UnitTestProject1.SuccessAndInconclusiveFixture" name="SuccessAndInconclusiveFixture.SuccessTest" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000113" />
    <testcase classname="UnitTestProject1.SuccessFixture" name="SuccessFixture.SuccessTest" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000106" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.FailTest11" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.0026809">
      <failure type="failure" message="  Expected: False&#xD;&#xA;  But was:  True&#xD;&#xA;">  Expected: False
  But was:  True

Stack Trace:
   at UnitTestProject1.UnitTest1.FailTest11() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 20

</failure>
    </testcase>
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.Ignored" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000501" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.Inconclusive" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000964" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.MultipleCategories" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000156" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.NoProperty" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000138" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.PassTest11" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.438578" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.WithCategory" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000331" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.WithCategoryAndProperty" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000158" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.WithProperties" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000142" />
    <testcase classname="UnitTestProject1.UnitTest1" name="UnitTest1.WithProperty" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000163" />
    <testcase classname="UnitTestProject1.UnitTest2" name="UnitTest2.ExplicitTest" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="7.7E-05" />
    <testcase classname="UnitTestProject1.UnitTest2" name="UnitTest2.FailTest22" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.003946">
      <failure type="failure" message="  Expected: False&#xD;&#xA;  But was:  True&#xD;&#xA;">  Expected: False
  But was:  True

Stack Trace:
   at UnitTestProject1.UnitTest2.FailTest22() in C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\UnitTests1.cs:line 87

</failure>
    </testcase>
    <testcase classname="UnitTestProject1.UnitTest2" name="UnitTest2.IgnoredTest" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="3.7E-05" />
    <testcase classname="UnitTestProject1.UnitTest2" name="UnitTest2.Inconclusive" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.001101" />
    <testcase classname="UnitTestProject1.UnitTest2" name="UnitTest2.PassTest21" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000485" />
    <testcase classname="UnitTestProject1.UnitTest2" name="UnitTest2.WarningTest" file="C:\GitLab-Runner\builds\QJg4XZun\0\test\Test.BuildCheck2\UnitTestProject1\bin\Debug\netcoreapp3.0\UnitTestProject1.dll" time="0.000709" />
  </testsuite>
</testsuites>

1 个答案:

答案 0 :(得分:0)

该功能未启用,谢谢@makozaki

解决方案
在gitlab服务器上打开ssh连接并运行以下命令

# Starting a Rails console
sudo gitlab-rails console
# Activate junit pipeline view (in the Rails console)
Feature.enable(:junit_pipeline_view)
相关问题