

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 `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'
```

下表說明 CLI `codebuild-tests-run` 命令的欄位。


| 欄位名稱 | Type | 必要或選用 | 定義 | 
| --- | --- | --- | --- | 
|  `test-command`  |  String  |  必要  |  此命令用於執行測試。  | 
|  `files-search`  |  String  |  必要  |  此命令會提供測試檔案的清單。您可以使用 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_tw/codebuild/latest/userguide/parallel-test-tests-run.html) 如需詳細資訊，請參閱[關於測試分割](parallel-test-splitting.md)。  | 

CLI `codebuild-tests-run` 會先使用 `files-search` 參數中提供的命令來識別測試檔案的清單。然後，它會使用指定的碎片策略，決定指定給目前碎片 （環境） 的測試檔案子集。最後，此測試檔案子集會格式化為以空格分隔的清單，並在執行之前附加至 `test-command` 參數中提供的命令結尾。

對於不接受空格分隔清單的測試架構，`codebuild-tests-run`CLI 透過 `CODEBUILD_CURRENT_SHARD_FILES`環境變數提供彈性的替代方案。此變數包含指派給目前建置碎片之測試檔案路徑的新行分隔清單。透過利用此環境變數，您可以輕鬆適應各種測試架構需求，容納預期輸入格式與空間分隔清單不同的測試架構需求。此外，您也可以根據測試架構的需求格式化測試檔案名稱。以下是在 Linux `CODEBUILD_CURRENT_SHARD_FILES` 上使用 搭配 Django 架構的範例。以下是`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`環境變數只能在 CLI `codebuild-tests-run` 的範圍內使用。  
此外，如果您在 test-mand `CODEBUILD_CURRENT_SHARD_FILES`內使用 ，請放入雙引號`CODEBUILD_CURRENT_SHARD_FILES`內，如上述範例所示。