测试运行程序是调用流程的执行单元。这是实际运行测试的地方。
接口
测试运行程序通过 IRemoteTest 接口进行定义,该接口提供了一种简单的 run
实现方法,在要运行测试时将调用该方法。
这样可以对测试的运行方式进行最简单的定义。但在实际操作中,测试编写者需要更多信息才能正确编写测试,通常是 build 和设备信息。在这种情况下,以下接口便派上用场。
基本
下面是目前使用最广泛的两个接口,它们可满足大多数测试的基本需求。
- IBuildReceiver 允许测试获取在 build 提供程序步骤中创建的
IBuildInfo
对象,该对象包含与测试设置相关的所有信息和工件。 - IDeviceTest - 允许 TF 接收代表被测设备的
ITestDevice
对象,并提供用来与之交互的 API。
高级
还有一些其他接口,允许在自动化测试框架与测试运行程序之间进行更复杂的交互:
- ITestFilterReceiver 允许测试接收一组过滤器,以便仅运行某些测试。这在运行测试的子集时很有用。
- ITestCollector 允许测试运行程序仅模拟运行测试,而不是实际执行测试。这在收集所有测试用例的列表时很有用。
现有测试运行程序
已经存在多种测试运行程序,一些用于主要测试类型:
- AndroidJUnitTest/InstrumentationTest(与设备端的 AJUR 关联)
- 使用 googletest 库的 GTest(设备端和主机端)
- 主机驱动的测试(在主机上执行并从主机调用设备的 Java 测试)
- 纯 Java 单元测试(我们的运行程序能够运行这两种测试)
- Python 测试
- 使用基准库的 Google 基准测试
除上述这些之外,还存在大量的自定义测试运行程序。它们在一些功能测试(例如启动测试)中发挥专门的用途。
编写新的测试运行程序
如需关于编写新测试运行程序的更多指导,请参阅编写测试部分。