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

CodeBuild不报告失败的测试

  •  0
  • Steve  · 技术社区  · 6 年前

    我正在使用CodeBuild来构建我的NPM项目。我的buildspec中有一个特定的报告组,我正在使用Jest和 npm test 命令

    当所有测试都通过时,它们会成功地报告给CodeBuild报告组。但是,如果其中一个测试失败,我会得到错误:

    [Container] 2020/08/24 01:41:18 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: npm test -- --silent. Reason: exit status 1`
    

    构建会停止(一般来说这很好),但没有报告失败的测试,所以测试通过率保持在100%,这意味着我看不到测试趋势或其他细节。

    我的buildspec的相关部分。yml:

    version: 0.2
    phases:
      install:
        commands:  
          - npm install
      pre_build:
        commands:
          - npm test -- --silent    
    reports:
      jest_reports:
        files:
          - 'test-results.xml'
        file-format: JunitXml
        base-directory: "reports/results"
    

    Jest配置在我的包中。json:

    "jest": {
        "reporters": [
            "default",
            [
                "jest-junit",
                {
                    "outputDirectory": "reports/results",
                    "outputName": "test-results.xml"
                }
            ]
        ]
    }
    

    代码构建日志的最后一部分:

    Test Suites: 1 failed, 8 passed, 9 total
    Tests:       2 failed, 57 passed, 59 total
    Snapshots:   0 total
    Time:        3.034s
    npm ERR! Test failed.  See above for more details.
    
    [Container] 2020/08/24 01:41:18 Command did not exit successfully npm test -- --silent exit status 1
    [Container] 2020/08/24 01:41:18 Phase complete: PRE_BUILD State: FAILED
    [Container] 2020/08/24 01:41:18 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: npm test -- --silent. Reason: exit status 1
    

    我如何设置CodeBuild来报告失败的测试,但如果测试失败,如何仍然阻止它继续构建?

    0 回复  |  直到 6 年前
        1
  •  8
  •   JD D    6 年前

    在研究这一点时,我看到的所有使用CodeBuild测试报告的示例,测试都是作为 build 阶段

    因为你的测试在 pre_build 阶段,如果 预建 如果失败,它将无法继续运行 upload_artifacts 阶段,只需跳到 finalizing . See the CodeBuild phase transitions diagram for more information on this.

    我建议遵循用户指南的模式,并将您的测试放在 建筑 阶段

    用户指南参考: