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

前端之家收集整理的这篇文章主要介绍了忽略Android单元测试,具体取决于SDK级别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有注释或其他一些方便的方法来忽略特定 Android SDK版本的junit测试?是否有类似于Lint注释TargetApi(x)的东西?或者我是否需要手动检查是否使用Build.VERSION运行测试?

解决方法

我认为没有准备好的东西,但为此创建自定义注释非常容易.

创建自定义注释

  1. @Target( ElementType.METHOD )
  2. @Retention( RetentionPolicy.RUNTIME)
  3. public @interface TargetApi {
  4. int value();
  5. }

Ovverride测试运行器(将检查值并最终忽略/触发测试)

  1. public class ConditionalTestRunner extends BlockJUnit4ClassRunner {
  2. public ConditionalTestRunner(Class klass) throws InitializationError {
  3. super(klass);
  4. }
  5.  
  6. @Override
  7. public void runChild(FrameworkMethod method,RunNotifier notifier) {
  8. TargetApi condition = method.getAnnotation(TargetApi.class);
  9. if(condition.value() > 10) {
  10. notifier.fireTestIgnored(describeChild(method));
  11. } else {
  12. super.runChild(method,notifier);
  13. }
  14. }
  15. }

标记您的测试

  1. @RunWith(ConditionalTestRunner.class)
  2. public class TestClass {
  3.  
  4. @Test
  5. @TargetApi(6)
  6. public void testMethodThatRunsConditionally() {
  7. System.out.print("Test me!");
  8. }
  9. }

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

猜你在找的Android相关文章