我们如何自动只在较新的 Android 版本上运行测试?

Jul*_*rty 3 android android-testing android-espresso

我发现一项测试,尤其是在 KitKat 之前的设备上一直失败。我相信这与旧 Android 设备上使用的嵌入式 WebView 的变化有关(但也许这是错误的)。无论如何,回到我的问题:我想要一种优雅的方式来控制是否根据设备上运行的 Android 版本运行测试。

目前,如果运行时早于 KitKat,我会使用短路测试并通过测试的代码。这是相关的代码:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
  assertTrue("Skipping this test as the Android version is too low.", true);
  return;
}
Run Code Online (Sandbox Code Playgroud)

因为我已经依次尝试使用两个注解:@TargetApi@RequiresApi

@Test
@RequiresApi(Build.VERSION_CODES.KITKAT)
public void zimTest() {
    Log.v("kiwixTesting", "Running zimTest() on Android version: " + Build.VERSION.SDK_INT);
    ...
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,测试都在我的测试设备(包括 Android 4.3、4.3、4.4 和更新版本)上运行。我可以判断,因为测试运行程序显示测试已成功运行,并且日志中Log.v("kiwixTesting", "Running zimTest() on Android version: " + Build.VERSION.SDK_INT);出现以下日志消息的输出 。

完整代码在这里,我在这里跟踪工作

有人可以建议比我更好的方法吗?谢谢你。

mar*_* w. 7

您可能想看看SdkSuppress 注释。它有两种方法——maxSdkVersion 和 minSdkVersion,您可以根据需要使用它们。