将 NUnit 结果文件上传到 GitHub 个操作

Upload NUnit Result File to GitHub Actions

我正在为我的 C# 项目设置 GitHub 操作,作为其中的一部分,我希望在 GitHub.

中显示测试结果

使用 this action,我的 YML 的相关部分如下所示:

    steps:
      - name:  Test
        run: dotnet test --no-restore --verbosity normal --logger:"nunit"
      - name: ⏫ Publish Unit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v1
        if: always()
        with:
          files: ${{ github.workspace }}/*/TestResults/*.xml

测试 运行 正确,TestResults.xml 存在并上传,但 GitHub 操作打印:

Error processing result file

Invalid format.

现在文档有点稀疏,但据我所知 GitHub Actions 和 NUnit 应该使用 JUnit 测试结果格式,文件看起来也很像这样:

<test-run id="2" duration="0.028704999999999998" testcasecount="18" total="18" passed="18" failed="0" inconclusive="0" skipped="0" result="Passed" start-time="2022-02-19T 11:32:34Z" end-time="2022-02-19T 11:32:36Z">
  <test-suite type="Assembly" name="HelloCSharp.Api.Tests.dll" fullname="/home/runner/work/hello-c-sharp/hello-c-sharp/HelloCSharp.Api.Tests/bin/Debug/net6.0/HelloCSharp.Api.Tests.dll" total="18" passed="18" failed="0" inconclusive="0" skipped="0" result="Passed" start-time="2022-02-19T 11:32:36Z" end-time="2022-02-19T 11:32:36Z" duration="0.028705">
    <test-case name="DisplayNameForAll" fullname="HelloCSharp.Api.Tests.Models.RelationshipTypeTest.DisplayNameForAll" methodname="DisplayNameForAll" classname="RelationshipTypeTest" result="Passed" start-time="2022-02-19T 11:32:36Z" end-time="2022-02-19T 11:32:36Z" duration="0.006137" asserts="0" seed="1714534364" />
    <!-- snip -->
    <errors />
  </test-suite>
</test-run>

那么这里可能是什么问题?

好的,NUnit 格式绝对不是 JUnit 格式。我尝试上传一个修复的 JUnit 文件并且成功了,然后我比较了 XML。 JUnit 文件有“testsuite”和“testcase”标签,而不是“test-suite”和“test-case”。

所以我的快速而肮脏的解决方案是在问题中的步骤之间添加此步骤:

      - name: ☢ Reformat Test Files (NUnit != JUnit)
        run: |
          sed -i 's/test-case/testcase/' ${{ github.workspace }}/*/TestResults/*.xml
          sed -i 's/test-suite/testsuite/' ${{ github.workspace }}/*/TestResults/*.xml
          sed -i 's/test-run/testsuite/' ${{ github.workspace }}/*/TestResults/*.xml