Я использую 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})
Похоже, это не работает, так как массив полей по-прежнему показывает общедоступный java.lang.Object android.os.Build$VERSION_CODES.robo_data в качестве первого элемента. Пожалуйста, помогите мне скрыть этот класс VERSION_CODES.