2015-12-27 79 views
0

我知道這個話題已經討論過,但有一點不同的位置:您需要使用Theme.AppCompat主題 - >單元測試

  • 應用程序工作正常
  • 錯誤只顯示單元測試
  • 主題是精細(新創建的樣本項目)

如何重現:

  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的模擬器
  2. 的Nexus 6P模擬器

每一次一樣,應用程序工作正常。單元測試失敗:

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

相關問題