我知道这个话题已经讨论过,但在这里有点不同:
如何重现:
运行它
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());
}
}
经过测试:
每次相同,应用程序都可以正常工作。单元测试失败:
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 :(得分:1)
以下代码对我有用 - 添加到单元测试中:
@Override
public void setUp(){
ContextThemeWrapper context = new ContextThemeWrapper(getInstrumentation().getTargetContext(), R.style.AppTheme);
setActivityContext(context);
}
另见: ActivityUnitTestCase and startActivity with ActionBarActivity
也可能
使用 ActivityInstrumentationTestCase2 而不是 ActivityUnitTestCase 也解决了这个问题。
另外&#34; onPause&#34;活动的名称没有被调用。对于 ActivityUnitTestCase
,这有些奇怪答案 1 :(得分:0)
使用新的 AndroidX 库,这可以通过将主题传递给片段启动方法来解决:
val authDialogScenario = launchFragment<AuthDialog>(themeResId = R.style.AppTheme)
这就是我的解决方案。