【问题标题】:Robolectric shadow static inner classRobolectric 影子静态内部类
【发布时间】: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


【解决方案1】:

抱歉,这不太可能。

__robo_data__(在提出原始问题后名称已更改)是 Robolectric 检测代码的副作用之一。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2013-07-05
    相关资源
    最近更新 更多