Исключение при использовании Robolectric + ActionBarSherlock

У меня большие проблемы с использованием Robolectric с ActionBarSherlock.

Я не знаю, почему, но кажется, что Robotric не может найти один класс:

Исключение:

java.lang.RuntimeException: java.lang.NoSuchMethodException: android.support.v4.app.Watson.$$robo$$Watson_7e47___constructor__()
    at java.lang.Class.getDeclaredMethod(Class.java:1937)
    at org.robolectric.bytecode.ShadowWrangler$InvocationPlan.callOriginal(ShadowWrangler.java:589)
    at org.robolectric.bytecode.ShadowWrangler.methodInvoked(ShadowWrangler.java:185)
    at org.robolectric.bytecode.RobolectricInternals.methodInvoked(RobolectricInternals.java:118)
    at android.support.v4.app.Watson.__constructor__(Watson.java)
    at android.content.Context.<init>(Context.java)
    at android.content.ContextWrapper.<init>(ContextWrapper.java)
    at android.view.ContextThemeWrapper.<init>(ContextThemeWrapper.java)
    at android.app.Activity.<init>(Activity.java)
    at android.support.v4.app.FragmentActivity.<init>(FragmentActivity.java)
    at android.support.v4.app.Watson.<init>(Watson.java)
    at com.actionbarsherlock.app.SherlockFragmentActivity.<init>(SherlockFragmentActivity.java:21)
    at pl.activities.CoreFragmentMenuActivity.<init>(CoreFragmentMenuActivity.java:21)
    at pl.activities.CoreNavigationActivity.<init>(CoreNavigationActivity.java:16)
    at pl.activities.MainActivity.<init>(MainActivity.java:18)
    at MainActivityTest.setUp(MainActivityTest.java:20)

Тестовый класс:

@RunWith(CustomTestRunner.class)
public class MainActivityTest
{
    private MainActivity activity;
    private Button pressMeButton;
    private TextView results;

    @Before
    public void setUp() throws Exception
    {
        activity = new MainActivity();
        activity.onCreate(null);

    }

    @Test
    public void shouldUpdateResultsWhenButtonIsClicked() throws Exception
    {
        Assert.assertEquals(activity.getTitle(), activity.getResources().getString(R.string.activity_main_title));
    }
}

CustomTestRunner:

import java.io.File;

public class CustomTestRunner extends RobolectricTestRunner
{
    public CustomTestRunner(Class<?> testClass) throws InitializationError
    {
        super(RobolectricContext.bootstrap(CustomTestRunner.class, testClass,
                new RobolectricContext.Factory()
                {
                    @Override
                    public RobolectricContext create()
                    {
                        return new RobolectricContext()
                        {
                            //http://stackoverflow.com/questions/15603583/impossible-runtimeexception-stub-with-robolectric
                            @Override
                            public boolean useAsm() // this override does the trick
                            {
                                return false;
                            }

                            @Override
                            protected AndroidManifest createAppManifest()
                            {
                                return new AndroidManifest(
                                        new File("AndroidManifest.xml"),
                                        new File("res"));
                            }
                        };
                    }
                }));
    }

Я использую:

<dependency>
         <groupId>org.robolectric</groupId>
         <artifactId>robolectric</artifactId>
         <version>2.0-alpha-2</version>
         <scope>test</scope>
</dependency>

У кого-нибудь была похожая проблема?


person radzio    schedule 08.05.2013    source источник
comment
Интересно, какие версии АБС и поддержки используете? Не могли бы вы также опубликовать результат зависимости mvn:tree?   -  person Eugen Martynov    schedule 31.05.2013


Ответы (1)


Я не знаю, сталкивались ли вы с этим, но Robolectric опубликовала сообщение в блоге о совместимости с ABS. Посмотрите. Надеюсь, это решит вашу проблему.

person Gowiem    schedule 29.05.2013