1

このトピックが議論されていることは知っていますが、ここでは少し異なります。

  • アプリは正常に動作します
  • エラーは単体テストでのみ表示されます
  • Theme is 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 エミュレータ
  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)

ありがとう、

ポール

4

2 に答える 2

2

次のコードは私にとってはうまくいきました -- 単体テストに追加されました:

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

参照: ActivityUnitTestCase および startActivity with ActionBarActivity

も可能

ActivityUnitTestCaseの代わりにActivityInstrumentationTestCase2を使用すると、問題も修正されます。

さらに、アクティビティの「onPause」は呼び出されません。ActivityUnitTestCaseではどういうわけか奇妙です

于 2015-12-27T12:52:09.790 に答える