忽略Android单元测试,具体取决于SDK级别

前端之家收集整理的这篇文章主要介绍了忽略Android单元测试,具体取决于SDK级别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有注释或其他一些方便的方法来忽略特定 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!");
    }
}

刚刚测试过,它对我有用.

猜你在找的Android相关文章