2015-12-27 1 views
0

Я знаю, что эта тема уже обсуждалась, но немного по-разному:Вы должны использовать тему Theme.AppCompat -> в блоке Test

  • App работает отлично
  • Ошибка отображается только в модульное тестирование
  • тема является Fine (новый созданный проект образца)

Как воспроизвести:

  1. Создать только новый проект -> FullScreenActivity Android 4.3
  2. Создать модульный тест
  3. Выполнить это

    public class FullscreenActivityTest extends ActivityUnitTestCase<FullscreenActivity> { 
    
    public FullscreenActivityTest() { 
        super(FullscreenActivity.class); 
    } 
    
    public void testStart() { 
        startActivity(new Intent(getInstrumentation() 
          .getTargetContext(), FullscreenActivity.class), null, null); 
        Assert.assertNotNull(getActivity()); 
    } 
    

    }

Испытано с:

  1. Nexus 5 Emulator
  2. Nexus 6P Emulator

Каждый раз, когда то же самое, приложение работает отлично. Юнит-тестирование завершается с:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
     at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:124) 
     at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146) 
     at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59) 
     at com.sample.foobar.FullscreenActivity.onCreate(FullscreenActivity.java:88) 
     at android.app.Activity.performCreate(Activity.java:5990) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
     at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:163) 

Спасибо,

Пол

+0

Протестировано теперь также с HTC One (5.0.x). Я могу запускать и использовать Activity, но не тестировать его. – Paul

ответ

1

Следующий код работает для меня, - добавил к тесту блока:

@Override 
public void setUp(){ 
    ContextThemeWrapper context = new ContextThemeWrapper(getInstrumentation().getTargetContext(), R.style.AppTheme); 
    setActivityContext(context); 
} 

Смотрите также: ActivityUnitTestCase and startActivity with ActionBarActivity

Также возможно

Использование ActivityInstrumentationTestCase2 вместо ActivityUnitTestCase исправляет этот вопрос тоже.

Кроме того, «onPause» активности не вызывается. Что-то нечетное с ActivityUnitTestCase

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