android — getSupportActionBar () возвращает ноль с Robolectric" />

getSupportActionBar () возвращает ноль с Robolectric

Метод getSupportActionBar () возвращает значение NULL, когда я вызываю его через тестовый набор, основанный на Roboelectric и JUnit.

Это мой простой контрольный пример:

package com.mobile.test;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import android.app.Activity;
import android.content.Intent;
import com.mobile.android.core.R;
import com.mobile.android.core.activity.MainActivity;
import com.mobile.android.core.activity.TestActivity;

@RunWith(RobolectricTestRunner.class)
public class NavigationDrawerTest {
private Activity activity;

@Test
public void testNavigationDrawer() {
    activity = Robolectric.buildActivity(MainActivity.class).create().get();
    String hello = activity.getResources().getString(R.string.drawer_open);
    System.out.println(hello);
    assertEquals(hello, "Menu");
}
}

А это мой класс Activity:

public class MainActivity extends ActionBarActivity {
// Drawer related
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
String[] mDrawerOptions;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // enable ActionBar app icon to behave as action to toggle nav-drawer
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
    }
}
}

Какие-нибудь яркие идеи по hwo, чтобы это исправить ?? Должен ли я написать какую-нибудь теневую активность, или кто-нибудь знает, как работать с этими проблемами на панели действий с RObolectric ??

Спасибо за любую помощь

7 голосов | спросил revolutionary 1 PM00000030000000731 2013, 15:49:07

1 ответ


0

Поддержка ActionBar
Мне удалось вернуть экземпляр Support ActionBar, добавив аннотацию @Config к моему тесту с номером сборки Gingerbread SDK:

@Test @Config(reportSdk = 10)
public void actionbarTest(){
.... Your Test here
}

Простую настройку проекта можно посмотреть здесь: simple-robolectric



ActionBarSherlock
Вам необходимо добавить измененные файлы ActionBarSherlock в ваш тестовый пакет и вызвать следующие методы в вашем методе @Before:

ActionBarSherlock.registerImplementation(ActionBarSherlockRobolectric.class);
ActionBarSherlock.unregisterImplementation(ActionBarSherlockNative.class);
ActionBarSherlock.unregisterImplementation(ActionBarSherlockCompat.class);

Полный набор инструкций можно найти здесь: ActionBar и Robolectric, работающие вместе

Обновление
С Robolectric 2.2 вам нужно только добавить аннотацию конфигурации "@Config (reportSdk = 10)" к вашим методам тестирования или классу, и это также должно работать.

ответил Marco RS 3 PM00000070000002731 2013, 19:40:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132