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

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

我怎样才能涵盖所有代码

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

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

谢谢

解决方法

使用反射更改值.
static void setFinalStatic(Field field,Object newValue) throws Exception {
    field.setAccessible(true);

    Field modifiersField = Field.class.getDeclaredField("modifiers");
    modifiersField.setAccessible(true);
    modifiersField.setInt(field,field.getModifiers() & ~Modifier.FINAL);

    field.set(null,newValue);
 }

然后

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

经过测试.作品.

原文链接:https://www.f2er.com/android/313962.html

猜你在找的Android相关文章