有些奇怪
我知道这个话题已经讨论过了,但这里有点不同:
- 应用程序运行良好
- 错误仅在单元测试中显示
- 主题很好(新建示例项目)
如何复制:
- 只创建一个新项目-->FullScreenActivity Android 4.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()); }
}
测试对象:
- Nexus 5模拟器
- 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)
谢谢,
Paul
以下代码对我有效——添加到单元测试中:
@Override
public void setUp(){
ContextThemeWrapper context = new ContextThemeWrapper(getInstrumentation().getTargetContext(), R.style.AppTheme);
setActivityContext(context);
}
另请参阅:ActivityUnitTestCase和带有ActionBarActivity 的startActivity
也可能
使用ActivityInstrumentationTestCase2而不是ActivityUnitTestCase也可以修复该问题。
此外,不会调用活动的"onPause"。这与ActivityUnitTestCase
使用新的AndroidX库,这可以通过将主题传递给片段启动方法来解决:
val authDialogScenario = launchFragment<AuthDialog>(themeResId = R.style.AppTheme)
这就是我的解决方案。