

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

# 使用 `codebuild-tests-run` CLI 命令
<a name="parallel-test-tests-run"></a>

AWS CodeBuild 提供将测试命令和测试文件位置作为输入的 CLI。带有这些输入的 CLI 会根据测试文件名称将测试拆分为在 `parallelism` 字段中指定的分片数量。将测试文件分配给分片由分片策略决定。

```
codebuild-tests-run \
    --files-search "codebuild-glob-search '**/__tests__/*.js'" \
    --test-command 'npx jest --runInBand --coverage' \
    --sharding-strategy 'equal-distribution'
```

下表说明了 `codebuild-tests-run` CLI 命令的字段。


| 字段名称 | Type | 必需或可选 | 定义 | 
| --- | --- | --- | --- | 
|  `test-command`  |  字符串  |  必需  |  此命令用于运行测试。  | 
|  `files-search`  |  字符串  |  必需  |  此命令给出了测试文件列表。您可以使用 AWS CodeBuild 提供的 [codebuild-glob-search](parallel-test-glob-search.md)CLI 命令或您选择的任何其他文件搜索工具。  确保 `files-search` 命令输出文件名，每个文件名用换行分隔。   | 
|  `sharding-strategy`  |  枚举  |  可选  |  有效值：`equal-distribution`（默认值）、`stability` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/parallel-test-tests-run.html) 有关更多信息，请参阅 [关于测试拆分](parallel-test-splitting.md)。  | 

`codebuild-tests-run` CLI 首先使用 `files-search` 参数中提供的命令识别测试文件列表。然后，它使用指定的分片策略确定为当前分片（环境）指定的测试文件子集。最后，测试文件的这一子集格式化为以空格分隔的列表，并在执行之前附加到在 `test-command` 参数中提供的命令的末尾。

对于不接受空格分隔列表的测试框架，`codebuild-tests-run` CLI 通过 `CODEBUILD_CURRENT_SHARD_FILES` 环境变量提供了一种灵活的替代方案。此变量包含为当前构建分片指定的测试文件路径的换行分隔列表。通过利用此环境变量，您可以轻松地适应各种测试框架要求，并适应那些期望输入格式不同于空格分隔列表的要求。此外，还可以根据测试框架的需要格式化测试文件名。以下是在 Linux 上通过 Django 框架使用 `CODEBUILD_CURRENT_SHARD_FILES` 的示例。此处，`CODEBUILD_CURRENT_SHARD_FILES` 用于获取 Django 支持的*点符号*文件路径：

```
codebuild-tests-run \
    —files-search "codebuild-glob-search '/tests/test_.py'" \
    —test-command 'python3 manage.py test $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed -E "s/\//__/g; s/\.py$//; s/__/./g")' \
    —sharding-strategy 'equal-distribution'
```

**注意**  
请注意，`CODEBUILD_CURRENT_SHARD_FILES` 环境变量只能在 `codebuild-tests-run` CLI 的范围内使用。  
另外，如果您在测试命令内使用 `CODEBUILD_CURRENT_SHARD_FILES`，请将 `CODEBUILD_CURRENT_SHARD_FILES` 放在双引号内，如上面的示例所示。