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提交验证并正式发布)。
Atest 使用 TEST_MAPPING
发现测试应该是 运行。所以如果你只是想用你的 API
测试你的 APK/services,也许你可以将你的仪器测试模块添加到代码顶级目录中的 TEST_MAPPING
,并且 运行 atest
在代码顶层目录中 运行 你的仪器测试。
source.android.com
提供了 document 关于如何使用 atest 运行 您的仪器测试和基于 TEST_MAPPING
.
的 tradefederation 测试
如果您的单元测试基于 Robolectric
,atest
可以 运行 正确,因为 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
我正在开发一个针对 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提交验证并正式发布)。
Atest 使用 TEST_MAPPING
发现测试应该是 运行。所以如果你只是想用你的 API
测试你的 APK/services,也许你可以将你的仪器测试模块添加到代码顶级目录中的 TEST_MAPPING
,并且 运行 atest
在代码顶层目录中 运行 你的仪器测试。
source.android.com
提供了 document 关于如何使用 atest 运行 您的仪器测试和基于 TEST_MAPPING
.
如果您的单元测试基于 Robolectric
,atest
可以 运行 正确,因为 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