我正在开发针对Android P的自定义设备,并添加了使用某些隐藏API的自定义系统服务。然后,该服务将被不属于AOSP源代码树的android应用程序使用。
我为我的服务添加了一些单元和仪器测试,现在想将它们集成到我的CI管道中。最好的方法是什么-扩展CTS?但这只是我的服务,没有公开任何公共API。 VTS?但是afaik VTS仅用于测试HAL和内核。有没有一种方法可以声明自定义测试套件,使其能够使用诸如“ tradefed.sh run my_test_suite”之类的贸易联合会/ Atest工具运行它?
答案 0 :(得分:0)
由于您的更改是AOSP
代码的一部分,因此CTS/VTS
涵盖了兼容性测试套件所需的所有测试用例。我认为,不需要将您的自定义测试套件添加为CTS/VTS
测试用例的一部分。但是,您可以为模块编写独立的单元测试用例。即使您在现有的CTS代码中添加了扩展名,它也没有用,因为最终的CTS将在官方测试套件(用于验证和正式发布的Google提交)上运行。
有关更多详细信息,请参阅https://source.android.com/compatibility/tests
答案 1 :(得分:0)
Atest使用TEST_MAPPING
查找应运行的测试。因此,如果您只想使用API
测试APK /服务,则可以将工具测试模块添加到代码顶部目录的TEST_MAPPING
中,然后在代码顶部运行atest
目录以运行仪器测试。
source.android.com
提供了document,有关如何使用atest运行基于TEST_MAPPING
的工具测试和贸易联盟测试。
如果您的单元测试基于Robolectric
,则atest
可以正确运行,因为atest在Android P中也支持Robolectric
单元测试。
答案 2 :(得分:0)
最后,我找到了我想要的东西-关于如何添加自定义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