

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 测试框架
<a name="test-framework-reporting"></a>

本节中的主题演示如何 AWS CodeBuild 为各种测试框架设置测试报告。

**Topics**
+ [使用 Jasmine 设置测试报告](test-report-jasmine.md)
+ [使用 Jest 设置测试报告](test-report-jest.md)
+ [使用 pytest 设置测试报告](test-report-pytest.md)
+ [使用 RSpec 设置测试报告](test-report-rspec.md)

# 使用 Jasmine 设置测试报告
<a name="test-report-jasmine"></a>

以下过程演示如何在 AWS CodeBuild 中使用 [JasmineBDD 测试框架](http://jasmine.github.io/)来设置测试报告。

该过程需要以下先决条件：
+ 您有一个现有的 CodeBuild 项目。
+ 您的项目是一个 Node.js 项目，此项目设置为使用 Jasmine 测试框架。

将 [https://www.npmjs.com/package/jasmine-reporters](https://www.npmjs.com/package/jasmine-reporters) 程序包添加到项目 `package.json` 文件的 `devDependencies` 部分。此程序包具有一系列可以与 Jasmine 一起使用 JavaScript 报告程序类。

```
npm install --save-dev jasmine-reporters
```

如果它尚未存在，请将 `test` 脚本添加到项目的 `package.json` 文件中。`test` 脚本确保在运行 **npm test** 时调用 Jasmine。

```
{
  "scripts": {
    "test": "npx jasmine"
  }
}
```

CodeBuild 支持以下 Jasmine 测试报告程序：

**JUnitXmlReporter**  
用于以 `JunitXml` 格式生成报告。

**NUnitXmlReporter**  
用于以 `NunitXml` 格式生成报告。

默认情况下，具有 Jasmine 的 Node.js 项目将有一个 `spec` 子目录，其中包含 Jasmine 配置和测试脚本。

要将 Jasmine 配置为以 `JunitXML` 格式生成报告，请通过将以下代码添加到测试中来实例化 `JUnitXmlReporter` 报告程序。

```
var reporters = require('jasmine-reporters');

var junitReporter = new reporters.JUnitXmlReporter({
  savePath: <test report directory>,
  filePrefix: <report filename>,
  consolidateAll: true
});

jasmine.getEnv().addReporter(junitReporter);
```

要将 Jasmine 配置为以 `NunitXML` 格式生成报告，请通过将以下代码添加到测试中来实例化 `NUnitXmlReporter` 报告程序。

```
var reporters = require('jasmine-reporters');

var nunitReporter = new reporters.NUnitXmlReporter({
  savePath: <test report directory>,
  filePrefix: <report filename>,
  consolidateAll: true
});

jasmine.getEnv().addReporter(nunitReporter)
```

测试报告将导出到由 *<测试报告目录>*/*<报告文件名>* 指定的文件中。

在您的 `buildspec.yml` 文件中，添加/更新以下部分。

```
version: 0.2

phases:
  pre_build:
    commands:
      - npm install
  build:
    commands:
      - npm build
      - npm test

reports:
  jasmine_reports:
    files:
      - <report filename>
    file-format: JUNITXML
    base-directory: <test report directory>
```

如果您使用的是 `NunitXml` 报告格式，请将 `file-format` 值更改为以下值。

```
    file-format: NUNITXML
```

# 使用 Jest 设置测试报告
<a name="test-report-jest"></a>

以下过程演示如何在 AWS CodeBuild 中使用 [Jest 测试框架](https://jestjs.io/)来设置测试报告。

该过程需要以下先决条件：
+ 您有一个现有的 CodeBuild 项目。
+ 您的项目是一个 Node.js 项目，此项目设置为使用 Jest 测试框架。

将 [https://www.npmjs.com/package/jest-junit](https://www.npmjs.com/package/jest-junit) 程序包添加到项目 `package.json` 文件的 `devDependencies` 部分。CodeBuild 使用此包生成格式为 `JunitXml` 的报告。

```
npm install --save-dev jest-junit
```

如果它尚未存在，请将 `test` 脚本添加到项目的 `package.json` 文件中。`test` 脚本确保在运行 **npm test** 时调用 Jest。

```
{
  "scripts": {
    "test": "jest"
  }
}
```

通过将以下内容添加到 Jest 配置文件中，将 Jest 配置为使用 `JunitXml` 报告程序。如果您的项目没有 Jest 配置文件，请在项目的根目录中创建一个名为 `jest.config.js` 的文件，然后添加以下内容。测试报告将导出到由 *<测试报告目录>*/*<报告文件名>* 指定的文件中。

```
module.exports = {
  reporters: [
    'default',
    [ 'jest-junit', {
      outputDirectory: <test report directory>,
      outputName: <report filename>,
    } ]
  ]
};
```

在您的 `buildspec.yml` 文件中，添加/更新以下部分。

```
version: 0.2

phases:
  pre_build:
    commands:
      - npm install
  build:
    commands:
      - npm build
      - npm test

reports:
  jest_reports:
    files:
      - <report filename>
    file-format: JUNITXML
    base-directory: <test report directory>
```

# 使用 pytest 设置测试报告
<a name="test-report-pytest"></a>

以下过程演示如何在 AWS CodeBuild 中使用 [pytest 测试框架](https://docs.pytest.org/)来设置测试报告。

该过程需要以下先决条件：
+ 您有一个现有的 CodeBuild 项目。
+ 您的项目是一个 Python 项目，此项目设置为使用 pytest 测试框架。

将以下条目添加到 `build` 文件的 `post_build` 或 `buildspec.yml` 阶段。此代码会自动发现当前目录中的测试，并将测试报告导出到由 *<测试报告目录>*/*<报告文件名>* 指定的文件中。报告使用 `JunitXml` 格式。

```
      - python -m pytest --junitxml=<test report directory>/<report filename>
```

在您的 `buildspec.yml` 文件中，添加/更新以下部分。

```
version: 0.2

phases:
  install:
    runtime-versions:
      python: 3.7
    commands:
      - pip3 install pytest
  build:
    commands:
      - python -m pytest --junitxml=<test report directory>/<report filename>

reports:
  pytest_reports:
    files:
      - <report filename>
    base-directory: <test report directory>
    file-format: JUNITXML
```

# 使用 RSpec 设置测试报告
<a name="test-report-rspec"></a>

以下过程演示如何在 AWS CodeBuild 中使用 [RSpec 测试框架](https://rspec.info/)来设置测试报告。

该过程需要以下先决条件：
+ 您有一个现有的 CodeBuild 项目。
+ 您的项目是一个 Ruby 项目，此项目设置为使用 RSpec 测试框架。

在 `buildspec.yml` 文件中添加/更新以下内容。此代码在 *<测试源代码目录>* 目录中运行测试，并将测试报告导出到由 *<测试报告目录>*/*<报告文件名>* 指定的文件中。报告使用 `JunitXml` 格式。

```
version: 0.2

phases:
  install:
    runtime-versions:
      ruby: 2.6
  pre_build:
    commands:
      - gem install rspec
      - gem install rspec_junit_formatter
  build:
    commands:
      - rspec <test source directory>/* --format RspecJunitFormatter --out <test report directory>/<report filename>
reports:
    rspec_reports:
        files:
            - <report filename>
        base-directory: <test report directory>
        file-format: JUNITXML
```