我正在使用Robolectric对我的代码进行单元测试。我在android.os.Build.VERSION_CODES上使用了反射。
Field[] fields = VERSION_CODES.class.getFields();
此字段数组中的第一个元素是public java.lang.Object android.os.Build $ VERSION_CODES。 robo_data 。我想从fields数组中删除此字段。我尝试为VERSION_CODES(android.os.Build中的静态内部类)编写阴影实现。
@Implements(VERSION_CODES.class)
class ShadowBuildVersionCodes {
public static final int BASE = 1;
public static final int BASE_1_1 = 2;
public static final int CUPCAKE = 3;
public static final int CUR_DEVELOPMENT = 10000;
public static final int DONUT = 4;
public static final int ECLAIR = 5;
public static final int ECLAIR_0_1 = 6;
public static final int ECLAIR_MR1 = 7;
public static final int FROYO = 8;
public static final int GINGERBREAD = 9;
public static final int GINGERBREAD_MR1 = 10;
public void _constructor_ () {
}
}
还将此作为配置添加到我的测试用例
@Config(shadows={ShadowBuildVersionCodes.class})
这似乎不起作用,因为字段数组仍显示公共java.lang.Object android.os.Build $ VERSION_CODES。 robo_data 作为其第一个元素。请帮我看看这个VERSION_CODES类。
答案 0 :(得分:0)
对不起,但这实际上是不可能的。
__robo_data__
(自提出原始问题以来,名称已更改)是Robolectric编写代码的副作用之一。
因此,最好的方法是忽略不是整数的字段。