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