【发布时间】:2017-04-05 04:34:55
【问题描述】:
我正在使用 Robolectric 对我的代码进行单元测试。我在 android.os.Build.VERSION_CODES 上使用反射。
Field[] fields = VERSION_CODES.class.getFields();
此字段数组中的第一个元素是 public java.lang.Object android.os.Build$VERSION_CODES.robo_data。我想从字段数组中删除该字段。我尝试为 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})
这似乎不起作用,因为 fields 数组仍然显示 public java.lang.Object android.os.Build$VERSION_CODES.robo_data 作为它的第一个元素。请帮我修改这个 VERSION_CODES 类。
【问题讨论】:
-
你能分享你正在测试的代码吗?
-
Field[] fields = VERSION_CODES.class.getFields(); for(int i = 0; i
-
是的,很清楚。但目的是什么?
-
有没有办法让它工作?有人可以帮我吗?
标签: shadow robolectric