

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

# 调试和运行自定义测试套件
<a name="run-tests-custom"></a>

设置[所需的配置](set-config-custom.md)后，IDT 就可以运行您的测试套件了。完整测试套件的运行时取决于硬件和测试套件的组成。作为参考，在 Raspberry Pi 3B 上完成完整的 FreeRTOS 资格认证测试套件大约需要 30 分钟。

在编写测试套件时，您可以使用 IDT 在调试模式下运行测试套件，以便在运行代码之前检查代码或将其提供给测试运行器。

## 在调试模式下运行 IDT
<a name="idt-debug-mode"></a>

由于测试套件依赖于 IDT 来与设备交互、提供上下文和接收结果，因此如果没有任何 IDT 交互，您就无法在 IDE 中简单地调试测试套件。为此，IDT CLI 提供了 `debug-test-suite` 命令，供您用于在调试模式下运行 IDT。运行以下命令以查看 `debug-test-suite` 的可用选项：

```
devicetester_[linux | mac | win_x86-64] debug-test-suite -h
```

当您在调试模式下运行 IDT 时，IDT 实际上并不启动测试套件或运行编排工具；相反，它会与您的 IDE 交互以响应在 IDE 中运行的测试套件所发出的请求，并将日志输出到控制台。IDT 不会超时，而会等待退出，直到手动中断。在调试模式下，IDT 也不运行测试编排工具，也不会生成任何报告文件。要调试测试套件，您必须使用 IDE 来提供 IDT 通常从配置文件中获得的一些信息。务必提供以下信息：
+ 每个测试的环境变量和参数。IDT 不会从 `test.json` 或 `suite.json` 中读取此信息。
+ 用于选择资源设备的参数。IDT 不会从 `test.json` 中读取此信息。

要调试您的测试套件，请完成以下步骤：

1.  创建运行测试套件所需的设置配置文件。例如，如果您的测试套件需要 `device.json`、`resource.json` 和 `user data.json`，请确保根据需要来配置所有测试套件。

1. 运行以下命令将 IDT 置于调试模式，然后选择运行测试需要的所有设备。

   ```
   devicetester_[linux | mac | win_x86-64] debug-test-suite [options]
   ```

   运行此命令后，IDT 会等待来自测试套件的请求，然后响应这些请求。IDT 还会生成 IDT 客户端软件开发工具包案例处理所需的环境变量。

1. 在您的 IDE 中，使用 `run` 或 `debug` 配置来执行以下操作：

   1. 设置 IDT 生成的环境变量的值。

   1. 设置您在 `test.json` 和 `suite.json` 文件中指定的任何环境变量或参数的值。

   1. 根据需要设置断点。

1. 在 IDE 中运行测试套件。

   您可以根据需要多次调试和重新运行测试套件。IDT 在调试模式下不会超时。

1.  完成调试后，请中断 IDT 以退出调试模式。

## 用于运行测试的 IDT CLI 命令
<a name="idt-cli-commands"></a>

以下小节介绍了 IDT CLI 命令。

------
#### [ IDT v4.0.0 ]

**`help`**  <a name="idt-command-help"></a>
列出有关指定命令的信息。

**`list-groups`**  <a name="idt-command-list-groups"></a>
列出给定测试套件中的组。

**`list-suites`**  <a name="idt-command-list-suites"></a>
列出可用的测试套件。

**`list-supported-products`**  
列出您的 IDT 版本的受支持产品（在本例中为 FreeRTOS 版本）和当前 IDT 版本的 FreeRTOS 资格认证测试套件版本。

**`list-test-cases`**  
列出给定测试组中的测试用例。支持以下选项：  
+ `group-id`. 要搜索的测试组。此选项是必需的，必须指定单个组。

**`run-suite`**  
对某个设备池运行一组测试。以下是一些常用的选项：  
+ `suite-id`. 要运行的测试套件版本。如果未指定，IDT 将使用 `tests` 文件夹中的最新版本。
+ `group-id`. 要以逗号分隔的列表形式运行的测试组。如果未指定，IDT 将运行测试套件中的所有测试组。
+ `test-id`. 要以逗号分隔的列表形式运行的测试用例。指定后，`group-id` 必须指定单个组。
+ `pool-id`. 要测试的设备池。如果您在 `device.json` 文件中定义了多个设备池，则测试运行器必须指定一个池。
+ `timeout-multiplier`。将 IDT 配置为使用用户定义的乘数来修改 `test.json` 文件中为测试指定的测试执行超时。
+ `stop-on-first-failure`. 将 IDT 配置为在第一次失败时停止执行。应将此选项与 `group-id` 结合使用来调试指定的测试组。
+ `userdata`。设置包含运行测试套件所需用户数据信息的文件。只有在测试套件的 `suite.json` 文件中 `userdataRequired` 被设置为 true 时，才需要这样做。
有关 `run-suite` 选项的更多信息，请使用 `help` 选项：  

```
devicetester_[linux | mac | win_x86-64] run-suite -h
```

**`debug-test-suite`**  
在调试模式下运行测试套件。有关更多信息，请参阅 [在调试模式下运行 IDT](#idt-debug-mode)。

------