繁体   English   中英

您需要使用 Theme.AppCompat 主题 --> 在单元测试中

[英]You need to use a Theme.AppCompat theme --> in Unit Test

我知道这个话题已经被讨论过,但这里有点不同:

  • 应用程序运行良好
  • 仅在单元测试中显示错误
  • 主题很好(新创建的示例项目)

如何重现:

  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)

谢谢,

保罗

以下代码对我有用——添加到单元测试中:

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

另请参阅: ActivityUnitTestCase 和 startActivity 与 ActionBarActivity

也可以

使用ActivityInstrumentationTestCase2而不是ActivityUnitTestCase也解决了这个问题。

此外,不会调用活动的“onPause”。 这与ActivityUnitTestCase有点奇怪

使用新的 AndroidX 库可以通过将主题传递给片段启动方法来解决这个问题:

val authDialogScenario = launchFragment<AuthDialog>(themeResId = R.style.AppTheme)

这是我的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM