AOSP 的自定义测试套件

Custom test suite for AOSP

我正在开发一个针对 Android P 的自定义设备,并添加了使用一些隐藏 APIs 的自定义系统服务。该服务随后将由 android 应用程序使用,该应用程序不属于 AOSP 源代码树。

我已经为我的服务添加了一些单元和仪器测试,现在想将它们集成到我的 CI 管道中。最好的方法是什么——扩展 CTS?但这只是我的服务,不会暴露任何 public API。 VTS?但是 afaik VTS 只是关于测试 HAL 和内核。有没有一种方法可以只声明自定义测试套件,以便能够 运行 使用 Trade Federation/Atest 工具,例如 "tradefed.sh run my_test_suite"?

由于您的更改是 AOSP 代码的一部分,因此 CTS/VTS 涵盖了兼容性测试套件所需的所有测试用例。我不认为,需要将您的自定义测试套件添加为 CTS/VTS 测试用例的一部分。但是,您可以为您的模块编写独立的单元测试用例。即使你在现有的CTS代码中添加扩展,也没有用,因为最终的CTS将运行在官方测试套件上(Google提交验证并正式发布)。

详情请参考https://source.android.com/compatibility/tests

Atest 使用 TEST_MAPPING 发现测试应该是 运行。所以如果你只是想用你的 API 测试你的 APK/services,也许你可以将你的仪器测试模块添加到代码顶级目录中的 TEST_MAPPING,并且 运行 atest 在代码顶层目录中 运行 你的仪器测试。

source.android.com 提供了 document 关于如何使用 atest 运行 您的仪器测试和基于 TEST_MAPPING.

的 tradefederation 测试

如果您的单元测试基于 Robolectricatest 可以 运行 正确,因为 atest 在 Android 中也支持 Robolectric 单元测试P.

终于我找到了我要找的东西 - 关于如何添加自定义 TradeFed 测试套件标签的很好的解释(基于 Android P 来源) - [aosp]/tools/tradefederation/core/tests/res/config/suite/suite.md

基本上你必须像这样创建一个新的配置文件(到目前为止,我试图按照文档中的说明将其添加到 TradeFederation 文件夹):

<?xml version="1.0" encoding="utf-8"?>
<configuration description="My test suite config">
    <test class="com.android.tradefed.testtype.suite.TfSuiteRunner">
        <option name="run-suite-tag" value="my-test-suite" />
    </test>
</configuration>

然后像这样在您的测试配置文件中使用它:

<option name="test-suite-tag" value="my-test-suite" />

然后你可以像这样执行你的套件:

make tradefed-all
make YourTestModule    
tradefed.sh run template/local --template:map test=suite/my-test-suite