4

我正在使用 Maven 来构建、运行和测试我的 Android 应用程序。Android 测试框架具有三个不同的测试范围@SmallTest@MediumTest@LargeTest,并且 android-maven-plugin 可以通过testTestSizetest/testSize参数选择测试范围。此参数可以是其中之一,small|medium|large并且可以从相关范围运行您的测试。

但是,如果我想同时运行小型和中型测试,不仅是小型测试还是中型测试,我该怎么办?这个问题的任何解决方案存在吗?

4

2 回答 2

3

根据InstrumentationTestRunner API doc,这就是 Android SDK 的设计方式和目前的工作方式:

运行所有小测试: adb shell am instrument -w -e size small com.android.foo/android.test.InstrumentationTestRunner

运行所有中等测试: adb shell am instrument -w -e size medium com.android.foo/android.test.InstrumentationTestRunner

运行所有大型测试: adb shell am instrument -w -e size large com.android.foo/android.test.InstrumentationTestRunner

即使你使用普通的 adb 命令运行你的测试,你也必须使用两个进程分别运行中小型测试,一个接一个。Android Maven 插件只是 adb 命令的另一个包装器,因此无法通过 android-maven-plugin 配置 AFAIK 更改默认行为。


如果您更仔细地阅读InstrumentationTestRunner API 文档,您会注意到有一个有趣的命令用法:

过滤测试运行到带有给定注释的测试: adb shell am instrument -w -e annotation com.android.foo.MyAnnotation com.android.foo/android.test.InstrumentationTestRunner

如果与其他选项一起使用,生成的测试运行将包含两个选项的并集。例如,“-e size large -e annotation com.android.foo.MyAnnotation”将只运行带有 LargeTest 和“com.android.foo.MyAnnotation”注释的测试。

注释配置作为实验性 API 添加(标记为 @hide,有关更多详细信息,请查看此版本历史记录),并且尚未在am instrument options list 中记录。从理论上讲,您可以创建自己的注释类(参见SmallTest.java示例),标记所有 @MediumTest 以及您的 @CustomizedTest 并使用 -e size 和 -e 注释来实现您想要的:同时从两个注释运行联合测试,全部在一个命令中。

不幸的是,android-maven-plugin 不支持注解配置,请参阅插件文档最新源代码。一种可能的解决方法是使用 exec-maven-plugin 运行普通adb shell am instrument命令。

希望这是有道理的。

于 2012-07-10T11:01:16.437 回答
0

为了使用 maven-android 的测试大小,我在 pom.xml 中创建了一个变量:

...
<properties>
  <config.build.testSize>medium</config.build.testSize>
</properties>
...

并在构建中执行以下操作:

<build>  
 <pluginManagement>
  <plugins>
   <plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    ...
    <configuration>
     <test>
      <testSize>${config.build.testSize}</testSize>
     </test>
    </configuration>
    ...
   </plugin>
  </plugins>
 </pluginManagement> 
</build>

我假设,您也可以通过将 android.test.testSize 参数提供给 maven 来实现这一点(如 mvn install -Dandroid.test.testSize=medium)

如果我错了,请更正这个 Maven 变量,在文档中还没有找到。BR,M。

于 2012-07-10T13:52:34.507 回答