我尝试测试一个使用ActionBarActivity (来自appcompat库)的活动。我需要一个自定义的应用程序,以便能够操纵DI系统来加载我的测试服务,而不是真正的服务。
如果我编写了测试并调用startActivity,我会得到以下错误:
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
如果我调用launchActivityWithIntent,活动启动时没有任何问题,但它使用的是真正的应用程序类,而不是模拟的应用程序类。你知道我如何解决这个问题吗?或者我如何在调用应用程序的onCreate之后,在我的工具测试中调用我的Activity get的onCreate之前执行代码?
发布于 2014-04-29 07:02:27
我发现如果我创建一个自定义的MockApplication并添加以下代码:
@Override
public void onCreate() {
super.onCreate();
setTheme(R.style.AppTheme);
}
我希望这也适用于其他人。
发布于 2014-05-18 22:08:06
被接受的答案在我的例子中不起作用,但在ActicityUnitTestCase子类中包含一些对我有效的东西:
@Override
public void setUp(){
ContextThemeWrapper context = new ContextThemeWrapper(getInstrumentation().getTargetContext(), R.style.AppTheme);
setActivityContext(context);
}
发布于 2015-02-10 17:47:27
请记住,我们应该创建可重用的活动,并且通过在onCreate方法中设置主题,我们将该活动连接到AppTheme。
在我看来,@Akira Speir的答案是最好的选择,即使我们需要记住,如果AndroidManifest中的主题发生了变化,我们也要更新测试。
https://stackoverflow.com/questions/22364433
复制相似问题