Robolectric影子静态内部类

时间:2017-04-05 04:34:55

标签: shadow robolectric

我正在使用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类。

1 个答案:

答案 0 :(得分:0)

对不起,但这实际上是不可能的。

__robo_data__(自提出原始问题以来,名称已更改)是Robolectric编写代码的副作用之一。

因此,最好的方法是忽略不是整数的字段。