是否有注释或其他一些方便的方法来忽略特定
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!"); } }
刚刚测试过,它对我有用.