是否有注释或其他一些方便的方法来忽略特定
Android SDK版本的junit测试?是否有类似于Lint注释TargetApi(x)的东西?或者我是否需要手动检查是否使用Build.VERSION运行测试?
解决方法
我认为没有准备好的东西,但为此创建自定义注释非常容易.
创建自定义注释
- @Target( ElementType.METHOD )
- @Retention( RetentionPolicy.RUNTIME)
- public @interface TargetApi {
- int value();
- }
Ovverride测试运行器(将检查值并最终忽略/触发测试)
- public class ConditionalTestRunner extends BlockJUnit4ClassRunner {
- public ConditionalTestRunner(Class klass) throws InitializationError {
- super(klass);
- }
- @Override
- public void runChild(FrameworkMethod method,RunNotifier notifier) {
- TargetApi condition = method.getAnnotation(TargetApi.class);
- if(condition.value() > 10) {
- notifier.fireTestIgnored(describeChild(method));
- } else {
- super.runChild(method,notifier);
- }
- }
- }
并标记您的测试
- @RunWith(ConditionalTestRunner.class)
- public class TestClass {
- @Test
- @TargetApi(6)
- public void testMethodThatRunsConditionally() {
- System.out.print("Test me!");
- }
- }
刚刚测试过,它对我有用.