我想知道是否仍然存在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);
经过测试.作品.