0

im застрял, чтобы получить robolectric и запустить мой проект Android. У меня уже есть длинный путь, чтобы добраться до этого момента. Robolectric работает уже несколько моих тестов, но когда я создать некоторую активность которых установка в ActionBar на тесты терпит неудачу с NullPointerException:NullPointerException on getSupportActionBar() с использованием Robolectric 2.3-SNAPSHOT

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); 

} 

Я видел несколько сообщений вокруг этой проблемы, но не могу понять, как решить это.

Как im, используя некоторую базовую активность, onCreate вызывается из расширяющегося действия onCreate().

@Override 
protected void onCreate(final Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    setupActionBar(getSupportActionBar()); 

} 

Моего build.gradle использует самый последний Фотоснимок, чтобы получить меня к этой точке:

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 является нулем, когда я передать его методу.

Кто-нибудь получил эту работу?

UPDATE:

Найдено это Pull запрос, который, кажется, чтобы решить эту проблему, но выглядит действительно Hacky ко мне. Проблема еще более обсуждается в this thread.

+0

, на котором линия точно не работает. – user2511882

+0

i обновил мой вопрос – Kitesurfer

+0

показать весь код деятельности –

ответ

0

Я использую снимок Robolectric 2.3, и я также попал в NPE, пока не начал устанавливать свойство reportSDK. Я впервые использовал @Config аннотации вроде этого:

@Test 
@Config(reportSDK = 13) 
public void myTest() { 
    // test here 
} 

Если это действительно решить эту проблему, я бы рекомендовал использовать файл свойств, чтобы применить эту конфигурацию. Поскольку аннотация @Config не наследуется, установка этого значения в файле - лучший способ применить его ко всем тестам, в том числе новые, добавленные в будущем.

Файл свойств должен быть назван org.robolectric.Config.properties и должен содержать следующее:

reportSdk=13 

Этот файл свойств должен быть доступен на вашем пути к классам.

Первоначально я попытался это решение благодаря этому С.О. вопрос: getSupportActionBar() returns null with Robolectric

+0

Я уже использую файл org.robolectric.Config.properties, мне нужно это, чтобы обойти «API-уровень 19 не поддерживается». Но это не решает проблему NPE для меня. – Kitesurfer

0

Может быть, вы можете попробовать создать собственную тему, как показано Here. что фиксировал NPE для меня (хотя у меня есть другие проблемы с ActionBar - см. my question для получения более подробной информации -)

 Смежные вопросы

  • Нет связанных вопросов^_^