我发现特别是一个测试在预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);
出现在日志中。
有人可以提出比我更好的方法吗?谢谢。