【发布时间】:2014-10-22 16:52:22
【问题描述】:
自从 Android Lollipop 推出以来,使用新的 Appcompat 支持库时,我无法运行 Robolectic 测试。我关注了:
我目前的进度可以在这里查看:https://github.com/fada21/android-tdd-bootstrap
我的配置(蒸馏)是:
android {
compileSdkVersion 21
buildToolsVersion "21.0.1"
defaultConfig {
applicationId "com.fada21.android.bootstrap"
minSdkVersion 15
targetSdkVersion 21
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:21.0.0'
compile 'com.android.support:appcompat-v7:21.0.0'
...
androidTestCompile('org.robolectric:robolectric:2.4-SNAPSHOT') {
我在这里提出了一个问题:https://github.com/robolectric/robolectric/issues/1332(查看此处了解更多详细信息)。
这是我遇到的错误:
java.lang.RuntimeException: Could not find any resource from reference ResName{com.fada21.android.bootstrap:style/Theme_AppCompat_Light_NoActionBar} from style StyleData{name='AppTheme', parent='Theme_AppCompat_Light_NoActionBar'} with theme null
at org.robolectric.shadows.ShadowAssetManager$StyleResolver.getParent(ShadowAssetManager.java:456)
at org.robolectric.shadows.ShadowAssetManager$StyleResolver.getAttrValue(ShadowAssetManager.java:394)
at org.robolectric.shadows.ShadowResources.getOverlayedThemeValue(ShadowResources.java:297)
at org.robolectric.shadows.ShadowResources.findAttributeValue(ShadowResources.java:286)
at org.robolectric.shadows.ShadowResources.attrsToTypedArray(ShadowResources.java:189)
at org.robolectric.shadows.ShadowResources.access$000(ShadowResources.java:48)
at org.robolectric.shadows.ShadowResources$ShadowTheme.obtainStyledAttributes(ShadowResources.java:494)
at org.robolectric.shadows.ShadowResources$ShadowTheme.obtainStyledAttributes(ShadowResources.java:489)
at org.robolectric.shadows.ShadowResources$ShadowTheme.obtainStyledAttributes(ShadowResources.java:484)
at android.content.res.Resources$Theme.obtainStyledAttributes(Resources.java)
at android.content.Context.obtainStyledAttributes(Context.java:380)
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:143)
at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:139)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123)
at com.fada21.android.bootstrap.HomeActivity.onCreate(HomeActivity.java:28)
at android.app.Activity.performCreate(Activity.java:5133)
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112)
at org.robolectric.util.ActivityController$1.run(ActivityController.java:113)
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:265)
at org.robolectric.util.ActivityController.create(ActivityController.java:110)
at org.robolectric.util.ActivityController.create(ActivityController.java:120)
at com.fada21.android.bootstrap.HomeActivityTest.testActivityNotNull(HomeActivityTest.java:24)
【问题讨论】:
-
我目前正在关注此线程github.com/robolectric/robolectric/issues/…。有同样的问题。
-
是的,我开始了这个话题。 @loeschg 你试过评论中提到的这个 ShadowSupportMenuInflater 吗?
-
我确实尝试过...我想。我打算明天重点看看。感谢您为我指明方向!
-
我一直在 github 和这里关注这个帖子。各位有没有想出一个可行的解决方案?我有同样的事情,我所有的活动都使用了试图使用 Theme.AppCompat.Light 的 ActionBarActivity。线程似乎指出它将在 3.0 版中修复。你们有没有找到另一种方法来使用 Robolectric 测试这些活动?我在这里尝试了答案,并在 github 线程中尝试了一堆解决方案,但没有骰子。
-
@lazypig 我已经发布了一个解决方案。你能试一试,告诉我这对你有用吗?
标签: android robolectric android-appcompat