

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

# test-e2e
<a name="greengrass-development-kit-cli-test"></a>

使用 AWS IoT Greengrass 开发工具包命令行界面（GDK CLI）中的 `test-e2e` 命令在 GDK 项目中初始化、构建和运行端到端测试模块。

**Topics**
+ [init](#greengrass-development-kit-cli-test-init)
+ [build](#greengrass-development-kit-cli-test-build)
+ [运行](#greengrass-development-kit-cli-test-run)

## init
<a name="greengrass-development-kit-cli-test-init"></a>

借助使用 Greengrass 测试框架（GTF）的测试模块初始化现有的 GDK CLI 项目。

默认情况下，GDK CLI 从 [GitHub 上的 AWS IoT Greengrass 组件模板存储库](https://github.com/aws-greengrass/aws-greengrass-component-templates)中检索 maven 模块模板。这个 maven 模块附带了对 `aws-greengrass-testing-standalone` JAR 文件的依赖关系。

此命令在 GDK 项目内创建一个名为 `gg-e2e-tests` 的新目录。如果测试模块目录已经存在且不为空，则命令将不执行任何操作就退出。此 `gg-e2e-tests` 文件夹包含 Maven 项目中结构化的 Cucumber 功能和步骤定义。

默认情况下，此命令将尝试使用最新发行版的 GTF。

**摘要**  

```
$ gdk test-e2e init
    [--gtf-version]
```

**参数**：  
+ `-ov`，`--gtf-version` –（可选）在 GDK 项目中的端到端测试模块中使用的 GTF 版本。此值必须属于[发行版](https://github.com/aws-greengrass/aws-greengrass-testing/releases)中的 GTF 版本。此参数覆盖 GDK CLI 配置中的 `gtf_version`。

**输出**：  
以下示例显示了运行此命令以使用测试模块初始化 GDK 项目时产生的输出。  

```
$ gdk test-e2e init
[2023-12-06 12:20:28] INFO - Using the GTF version provided in the GDK test config 1.2.0
[2023-12-06 12:20:28] INFO - Downloading the E2E testing template from GitHub into gg-e2e-tests directory...
```

## build
<a name="greengrass-development-kit-cli-test-build"></a>

**注意**  
您必须通过运行 **gdk component build** 来构建组件，然后才能构建端到端测试模块。

构建端到端测试模块。GDK CLI 使用您在 [GDK CLI 配置文件](gdk-cli-configuration-file.md) `gdk-config.json` 中的 `test-e2e` 属性下指定的构建系统来构建测试模块。您必须在 `gdk-config.json` 文件所在的同一文件夹中运行此命令。

默认情况下，GDK CLI 使用 maven 构建系统来构建测试模块。需要使用 [Maven](https://maven.apache.org/) 才能运行 `gdk test-e2e build` 命令。

如果测试功能文件有 `GDK_COMPONENT_NAME` 和 `GDK_COMPONENT_RECIPE_FILE` 等变量需要插值，则必须通过运行 **gdk-component-build** 构建组件，然后才能构建测试模块。

运行此命令时，GDK CLI 会插入 GDK 项目配置中的所有变量，并构建 `gg-e2e-tests` 模块以生成最终的测试 JAR 文件。

**摘要**  

```
$ gdk test-e2e build
```

**参数**：  
无

**输出**：  
下面的示例显示运行此命令时产生的输出。  

```
$ gdk test-e2e build
[2023-07-20 15:36:48] INFO - Updating feature file: file:///path/to//HelloWorld/greengrass-build/gg-e2e-tests/src/main/resources/greengrass/features/component.feature
[2023-07-20 15:36:48] INFO - Creating the E2E testing recipe file:///path/to/HelloWorld/greengrass-build/recipes/e2e_test_recipe.yaml
[2023-07-20 15:36:48] INFO - Building the E2E testing module
[2023-07-20 15:36:48] INFO - Running the build command 'mvn package'
.........
```

## 运行
<a name="greengrass-development-kit-cli-test-run"></a>

使用 GDK 配置文件中的测试选项运行测试模块。

**注意**  
您必须通过运行 **gdk test-e2e build** 构建测试模块，然后才能运行端到端测试。

**摘要**  

```
$ gdk test-e2e run
    [--gtf-options]
```

**参数**：  
+ `-oo`，`--gtf-options` –（可选）指定运行端到端测试的选项列表。参数必须是有效的 JSON 字符串或包含 GTF 选项的 JSON 文件的文件路径。配置文件中提供的选项与命令参数中提供的选项合并。如果一个选项在两个位置都存在，则参数中的选项优先于配置文件中的选项。

  如果此命令中未指定 `tags` 选项，GDK 会将 `Sample` 用于标签。如果未指定 `ggc-archive`，GDK 将下载最新版本的 Greengrass Nucleus 存档。

**输出**：  
下面的示例显示运行此命令时产生的输出。  

```
$ gdk test-e2e run
[2023-07-20 16:35:53] INFO - Downloading latest nucleus archive from url https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-latest.zip
[2023-07-20 16:35:57] INFO - Running test jar with command java -jar /path/to/greengrass-build/gg-e2e-tests/target/uat-features-1.0.0.jar —ggc-archive=/path/to/aws-greengrass-gdk-cli/HelloWorld/greengrass-build/greengrass-nucleus-latest.zip —tags=Sample

16:35:59.693 [] [] [] [INFO] com.aws.greengrass.testing.modules.GreengrassContextModule - Extracting /path/to/workplace/aws-greengrass-gdk-cli/HelloWorld/greengrass-build/greengrass-nucleus-latest.zip into /var/folders/7g/ltzcb_3s77nbtmkzfb6brwv40000gr/T/gg-testing-7718418114158172636/greengrass
16:36:00.534 [gtf-1.1.0-SNAPSHOT] [] [] [INFO] com.aws.greengrass.testing.features.LoggerSteps - GTF Version is gtf-1.1.0-SNAPSHOT
.......
```