我们如何才能自动仅 运行 测试较新的 Android 版本?

How can we automatically only run tests on newer Android versions?

我发现一项测试尤其在 KitKat 之前的设备上始终失败。我认为这与旧 Android 设备上使用的嵌入式 WebView 的变化有关(但这可能是错误的)。无论如何,回到我的问题:我想要一种优雅的方式来控制测试是否 运行 取决于设备上 运行ning 的 Android 版本。

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

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

我已经尝试依次使用两个注释:@TargetApi@RequiresApi 例如

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

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

完整代码为here and I'm tracking the work here

有人能提出比我更好的方法吗?谢谢。

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