Квалификаторы Robolectric выдаются из зависимости Robolectric

Следуя этому руководству по настройке Robolectric в Eclipse ADT и используя версию 2.1.1 из Sonatype

Я получаю следующую трассировку стека при выполнении базового теста, описанного в руководстве:

java.lang.RuntimeException: really, more than 64 qualifiers?!?
at org.robolectric.res.ResBunch.pick(ResBunch.java:45)
at org.robolectric.res.ResBunch.getValue(ResBunch.java:40)
at org.robolectric.res.XResourceLoader.getValue(XResourceLoader.java:54)
at org.robolectric.res.PackageResourceLoader.getValue(PackageResourceLoader.java:5)
at org.robolectric.shadows.ShadowAssetManager.getAndResolve(ShadowAssetManager.java:263)
at org.robolectric.shadows.ShadowAssetManager.getAndResolve(ShadowAssetManager.java:259)
at org.robolectric.shadows.ShadowAssetManager.getResourceText(ShadowAssetManager.java:62)
at android.content.res.AssetManager.getResourceText(AssetManager.java)
at android.content.res.Resources.getText(Resources.java:225)
at android.content.res.Resources.getString(Resources.java:313)
at android.text.format.DateUtils.getDayOfWeekString(DateUtils.java:325)
at android.text.format.DateFormat.format(DateFormat.java:473)
at android.text.format.DateFormat.format(DateFormat.java:422)
at com.test.project.HomeScreenActivity.setCheckinDate(HomeScreenActivity.java:505)
at com.test.project.HomeScreenActivity.onCreate(HomeScreenActivity.java:148)
at android.app.Activity.performCreate(Activity.java:5008)
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112)
at org.robolectric.util.ActivityController$1.run(ActivityController.java:119)
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:256)
at org.robolectric.util.ActivityController.create(ActivityController.java:114)
at org.robolectric.util.ActivityController.create(ActivityController.java:126)
at com.test.project.HomeScreenActivityTest.setUp(HomeScreenActivityTest.java:18)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:241)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

И вывод из консоли выглядит так:

DEBUG: Loading resources for com.test.project from .\res...
DEBUG: Loading resources for com.squareup.timessquare from .\..\android-times-square\library\res...
DEBUG: Loading resources for android from jar:C:\Users\me\.m2\repository\org\robolectric\android-res\4.1.2_r1_rc\android-res-4.1.2_r1_rc-real.jar!/res...
INFO: no id mapping found for android:drawable/scrollbar_handle_horizontal; assigning ID #0x1140002
INFO: no id mapping found for android:drawable/scrollbar_handle_vertical; assigning ID #0x1140003
INFO: no id mapping found for android:color/highlighted_text_light; assigning ID #0x1140004
INFO: no id mapping found for android:color/hint_foreground_light; assigning ID #0x1140005
INFO: no id mapping found for android:color/link_text_light; assigning ID #0x1140006
INFO: no id mapping found for android:color/dim_foreground_light_disabled; assigning ID #0x1140007
INFO: no id mapping found for android:color/dim_foreground_light; assigning ID #0x1140008
INFO: no id mapping found for android:color/bright_foreground_light; assigning ID #0x1140009
INFO: no id mapping found for android:layout/text_edit_paste_window; assigning ID #0x114000a
INFO: no id mapping found for android:layout/text_edit_no_paste_window; assigning ID #0x114000b
INFO: no id mapping found for android:layout/text_edit_side_paste_window; assigning ID #0x114000c
INFO: no id mapping found for android:layout/text_edit_side_no_paste_window; assigning ID #0x114000d
INFO: no id mapping found for android:layout/text_edit_suggestion_item; assigning ID #0x114000e
INFO: no id mapping found for android:color/bright_foreground_light_disabled; assigning ID #0x114000f
INFO: no id mapping found for android:color/highlighted_text_dark; assigning ID #0x1140010
INFO: no id mapping found for android:color/hint_foreground_dark; assigning ID #0x1140011
INFO: no id mapping found for android:color/link_text_dark; assigning ID #0x1140012
INFO: no id mapping found for android:color/bright_foreground_dark_disabled; assigning ID #0x1140013
INFO: no id mapping found for android:color/bright_foreground_dark; assigning ID #0x1140014
INFO: no id mapping found for android:color/bright_foreground_dark_inverse; assigning ID #0x1140015
INFO: no id mapping found for android:drawable/spinner_background_holo_light; assigning ID #0x1140016
INFO: no id mapping found for android:color/dim_foreground_dark_disabled; assigning ID #0x1140017
INFO: no id mapping found for android:color/dim_foreground_dark; assigning ID #0x1140018
INFO: no id mapping found for android:color/dim_foreground_dark_inverse_disabled; assigning ID #0x1140019
INFO: no id mapping found for android:color/dim_foreground_dark_inverse; assigning ID #0x114001a
INFO: no id mapping found for android:drawable/progress_medium_white; assigning ID #0x114001b
INFO: no id mapping found for android:drawable/spinner_white_48; assigning ID #0x114001c
INFO: no id mapping found for android:color/primary_text_light_disable_only; assigning ID #0x114001d

Похоже, robolectric не работает при загрузке ресурсов из jar: C:\Users\ahobbs\.m2\repository\org\robolectric\android-res\4.1.2_r1_rc\android-res-4.1.2_r1_rc-real.jar!/ res... и я не уверен, как решить эту проблему.

Вот мой тестовый класс:

package com.test.project

import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;

@RunWith(org.robolectric.RobolectricTestRunner.class)
public class HomeScreenActivityTest {

    private HomeScreenActivity mActivity;

    @Before
    public void setUp() throws Exception {
        mActivity = Robolectric.buildActivity(HomeScreenActivity.class).create().get();
    }

    @Test
    public void shouldHaveHappySmiles() throws Exception {
        String hello = mActivity.getResources().getString(R.string.test);
        assertThat(hello, equalTo("test"));
    }
}

Как я могу исправить эту проблему и запустить мой простой тест с помощью Robolectric?


person ahobbs    schedule 06.09.2013    source источник


Ответы (1)


Это ошибка, и она должна быть исправлена ​​в Robolectric 2.2:

https://github.com/robolectric/robolectric/commit/acab7e8fe544000c9467b3009dfeea9464a2b956#src/main/java/org/robolectric/res/ResBunch.java

person Eugen Martynov    schedule 09.09.2013