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

时间:2017-08-24 15:32:06

标签: android android-espresso android-testing

我发现特别是一个测试在预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;
}

我尝试依次使用两个注释:@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和更新版本)。我可以告诉,因为测试运行器显示测试已成功运行,并输出以下日志消息 Log.v("kiwixTesting", "Running zimTest() on Android version: " + Build.VERSION.SDK_INT);出现在日志中。

完整代码为here,我正在跟踪工作here

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

1 个答案:

答案 0 :(得分:3)

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