я застрял, чтобы запустить robolectric в моем проекте Android. Я уже проделал долгий путь, чтобы добраться до этой точки. Robolectric уже запускает пару моих тестов, но когда я создаю какое-то действие, которое настраивает ActionBar, тесты завершаются с ошибкой NullPointerException:
java.lang.NullPointerException
at android.support.v7.app.ActionBarImplICS.setNavigationMode(ActionBarImplICS.java:214)
at android.support.v7.app.ActionBarImplJB.setNavigationMode(ActionBarImplJB.java:20)
at org.project.android.SearchLocationFilterActivity.setupActionBar(SearchLocationFilterActivity.java:57)
at org.project.android.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:67)
at org.project.android.SearchLocationFilterActivity.onCreate(SearchLocationFilterActivity.java:22)
at android.app.Activity.performCreate(Activity.java:5133)
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112)
at org.robolectric.util.ActivityController$1.run(ActivityController.java:150)
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:265)
at org.robolectric.util.ActivityController.create(ActivityController.java:147)
at org.robolectric.util.ActivityController.create(ActivityController.java:157)
В этом действии я настраиваю ActionBar, этот код вызывается.
@Override
protected void setupActionBar(final ActionBar actionBar)
{
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayHomeAsUpEnabled(true);
setSupportProgressBarIndeterminateVisibility(false);
setSupportProgressBarVisibility(false);
}
Я видел сообщение об этой проблеме, но не могу понять, как это решить.
Поскольку я использую некоторую базовую активность, onCreate вызывается из метода расширения Activity onCreate().
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setupActionBar(getSupportActionBar());
}
Мой build.gradle использует последний SNAPSHOT, чтобы довести меня до этого момента:
compile 'com.android.support:appcompat-v7:19.0.0+'
compile 'com.android.support:support-v4:18.0.0'
testCompile 'org.robolectric:robolectric:2.3-SNAPSHOT'
Nullpointer поднимается в первой строке, поэтому ActionBar имеет значение null, когда я передаю его методу.
У кого-нибудь это работает?
ОБНОВИТЬ:
Нашел этот Pull запрос, который, кажется, решает эту проблему, но мне кажется действительно хакерским. Проблема еще более подробно обсуждается в этой теме.