用Robolectric和Google Play服务测试让我觉得“AndroidManifest.xml没有正确的价值

时间:2014-07-27 18:50:48

标签: java android android-manifest google-play-services robolectric

我有一个Android项目,包含Google Play服务和Robolectric测试,在同一个模块中,其他包。 我的清单中有这个:

  <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/gms_version" />

这是在integer.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="gms_version">@integer/google_play_services_version</integer>
</resources>

但是当我运行测试时,我得到了这个错误:

java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4323000 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

我试图将此标记直接放在清单中,但我得到一个nullpointerexception获取此值。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您使用的是什么版本的Robolectric?这是一个错误,robo假设所有元数据都是字符串,但应该已经修复(我使用2.3,这很好) https://github.com/robolectric/robolectric/issues/950

另一种解决方法是直接将整数值放在清单中而不是引用它,但猜测那不是你正在寻找的......