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

标签 java android unit-testing activityunittestcase

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

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

如何重现:

  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 and startActivity with ActionBarActivity

也可以

使用ActivityInstrumentationTestCase2而不是ActivityUnitTestCase也可以解决该问题。

此外, Activity 的“onPause”不会被调用。这与 ActivityUnitTestCase

有点奇怪

关于java - 您需要在单元测试中使用 Theme.AppCompat 主题 -->,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34480331/

相关文章:

java - 数据拼接连接/合并 - Oracle 与基于 Java 的技术

java - 如何播放简单的音频文件(Java)?

java - PlayFramework 和在 MySQL 数据库中搜索波斯语单词

python - ReactorNotRestartable 在使用 twisted 和 trial 启动两个等效的单元测试时

c# - 我可以在单元测试中写入控制台吗?如果是,为什么控制台窗口不打开?

java - 以编程方式确定 Java 类是否已修补?

android - 在 Motorola Atrix Android Gingerbread 的 qHD 屏幕上出现缩小的示例软键盘

android - 如何在 TextInputLayout android 中更改设置 EndIcon Drawable 的可见性(可见、不可见或消失)?

android - 如何从启动器中隐藏 Android 应用程序

Django/Python 将字符串转换为模型过滤器,结果为 '='