android – 本地单元测试中Build.VERSION.SDK_INT的Stub值

前端之家收集整理的这篇文章主要介绍了android – 本地单元测试中Build.VERSION.SDK_INT的Stub值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否仍然存在Build.Version.SDK_INT的值?假设我在ClassUnderTest中有以下行:
  1. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
  2. //do work
  3. }else{
  4. //do another work
  5. }

我怎样才能涵盖所有代码

我的意思是我想用不同的SDK_INT运行两个测试来输入两个块.

是否有可能在使用Mockito / PowerMockito的Android本地单元测试中?

谢谢

解决方法

使用反射更改值.
  1. static void setFinalStatic(Field field,Object newValue) throws Exception {
  2. field.setAccessible(true);
  3.  
  4. Field modifiersField = Field.class.getDeclaredField("modifiers");
  5. modifiersField.setAccessible(true);
  6. modifiersField.setInt(field,field.getModifiers() & ~Modifier.FINAL);
  7.  
  8. field.set(null,newValue);
  9. }

然后

  1. setFinalStatic(Build.VERSION.class.getField("SDK_INT"),123);

经过测试.作品.

猜你在找的Android相关文章