2

我查看了 CTS 中可用的已知失败测试计划,其中排除了已知失败的 CTS 测试。从那里我很清楚,您可以使用此 XML 选项排除测试:

 .....
 <option name="compatibility:exclude-filter" value="CtsAppSecurityHostTestCases android.appsecurity.cts.DocumentsTest#testCreateNew" />
 <option name="compatibility:exclude-filter" value="CtsAppSecurityHostTestCases android.appsecurity.cts.DocumentsTest#testCreateWebLink" />
 <option name="compatibility:exclude-filter" value="CtsAppSecurityHostTestCases android.appsecurity.cts.DocumentsTest#testEject" />
 .....

因此,我创建了一个my-known-failures.xml,其中包含大约 100 个要排除的测试。并像这样将我的 my-known-failures.xml包含在 cts-suite.xml 中。

<configuration description="Runs CTS as a suite">
 ...
<include name="my-known-failures" />

当我运行 cts-suite.xml 时,我使用以下命令启动它:

./${CTS_BIN} run commandAndExit cts-suite-automated --logcat-on-failure --bugreport-on-failure --screenshot-on-failure --log-level-display debug

该报告表明 cts-tradefed 框架已获取我的配置:

Excludes:[ .... CtsAppSecurityHostTestCases android.appsecurity.cts.DocumentsTest#testCreateNew,  CtsAppSecurityHostTestCases android.appsecurity.cts.DocumentsTest#testCreateWebLink, CtsAppSecurityHostTestCases android.appsecurity.cts.DocumentsTest#testEject ... ]

但是,看起来这些测试确实已经执行了,因为在 test_result.xml 中我们看到测试用例已给出“失败”结果,并且包含堆栈跟踪:

<Test result="fail" name="testEjected">
    <Failure message="java.lang.AssertionError: Devices that claim to support adoptable storage must have adoptable media inserted during CTS to verify correct behavior">
      <StackTrace>java.lang.AssertionError: Devices that claim to support adoptable storage must have adoptable media inserted during CTS to verify correct behavior
    at android.appsecurity.cts.AdoptableHostTest.getAdoptionDisk(AdoptableHostTest.java:311)
    at android.appsecurity.cts.AdoptableHostTest.testEjected(AdoptableHostTest.java:251)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at junit.framework.TestCase.runTest(TestCase.java:176)
    at junit.framework.TestCase.runBare(TestCase.java:141)
    at com.android.tradefed.testtype.DeviceTestResult$1.protect(DeviceTestResult.java:90)
    at com.android.tradefed.testtype.DeviceTestResult.runProtected(DeviceTestResult.java:65)
    at com.android.tradefed.testtype.DeviceTestResult.run(DeviceTestResult.java:94)
    at junit.framework.TestCase.run(TestCase.java:129)
    at com.android.tradefed.testtype.DeviceTestCase.run(DeviceTestCase.java:183)
    at com.android.tradefed.testtype.JUnitRunUtil.runTest(JUnitRunUtil.java:55)
    at com.android.tradefed.testtype.JUnitRunUtil.runTest(JUnitRunUtil.java:38)
    at com.android.tradefed.testtype.DeviceTestCase.run(DeviceTestCase.java:148)
    at com.android.tradefed.testtype.HostTest.runRemoteTest(HostTest.java:463)
    at com.android.tradefed.testtype.HostTest.runTestClasses(HostTest.java:406)
    at com.android.tradefed.testtype.HostTest.run(HostTest.java:397)
    at com.android.compatibility.common.tradefed.testtype.JarHostTest.run(JarHostTest.java:142)
    at com.android.tradefed.testtype.suite.ModuleDefinition.run(ModuleDefinition.java:278)
    at com.android.tradefed.testtype.suite.ITestSuite.runSingleModule(ITestSuite.java:276)
    at com.android.tradefed.testtype.suite.ITestSuite.run(ITestSuite.java:225)
    at com.android.tradefed.invoker.TestInvocation.runTests(TestInvocation.java:793)
    at com.android.tradefed.invoker.TestInvocation.prepareAndRun(TestInvocation.java:476)
    at com.android.tradefed.invoker.TestInvocation.performInvocation(TestInvocation.java:330)
    at com.android.tradefed.invoker.TestInvocation.invoke(TestInvocation.java:921)
    at com.android.tradefed.command.CommandScheduler$InvocationThread.run(CommandScheduler.java:555)
</StackTrace>
    </Failure>

所以我很困惑。我知道 cts-tradefed 框架确实排除了一些带有已知失败计划的测试,但是当我尝试做同样的事情时,它并没有按预期工作。

是否可以对 cts-suite.xml 进行排除测试的测试计划?

谢谢!

4

1 回答 1

2

是的,您可以通过使用 cts tradefed 中的子计划功能来做到这一点。尝试使用要运行的所有模块创建子计划 xml 文件,并在同一 xml 文件中提及要排除的测试用例。

命令:运行 cts --subplan

注意:将此 xml 文件放在 /android-cts/subplans/folder 默认情况下 subplans 文件夹不会存在,您可以手动创建它并提供适当的文件夹权限。

于 2019-11-22T12:10:18.883 回答