【问题标题】:Update Robolectric 2.4: Getting application tag error for library projects in eclipse更新 Robolectric 2.4:在 Eclipse 中获取库项目的应用程序标记错误
【发布时间】:2015-01-09 03:58:29
【问题描述】:

使用 2.4 更新 robolectric 后我得到的错误堆栈跟踪

有什么办法吗?

java.lang.RuntimeException: java.lang.IllegalArgumentException: Missing required <application/> element in .\..\google-play-services_lib\AndroidManifest.xml
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:226)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:158)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.IllegalArgumentException: Missing required <application/> element in .\..\google-play-services_lib\AndroidManifest.xml
    at org.robolectric.AndroidManifest.parseAndroidManifest(AndroidManifest.java:155)
    at org.robolectric.AndroidManifest.getPackageName(AndroidManifest.java:474)
    at org.robolectric.AndroidManifest.getResourcePath(AndroidManifest.java:517)
    at org.robolectric.AndroidManifest.getIncludedResourcePaths(AndroidManifest.java:522)
    at org.robolectric.AndroidManifest.getIncludedResourcePaths(AndroidManifest.java:524)
    at org.robolectric.RobolectricTestRunner.createAppResourceLoader(RobolectricTestRunner.java:635)
    at org.robolectric.RobolectricTestRunner.getAppResourceLoader(RobolectricTestRunner.java:627)
    at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:67)
    at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:440)
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:222)
    ... 16 more

【问题讨论】:

  • 你能选择一个答案吗?

标签: android eclipse unit-testing robolectric


【解决方案1】:

这是 Roboletric 2.4 将检查库项目的标签。

你可以参考这个官方链接:https://github.com/robolectric/robolectric/pull/1309

它有一个解决方法来解决这个问题。

【讨论】:

  • 更具体地说,this is the work-around
  • 我在使用 Roboelectric 2.4 的 ViewPagerIndicator 时遇到同样的错误,请问有什么建议吗?
  • 我发现有人为 roboletric github.com/robolectric/robolectric/issues/1602 创建了问题,但是,似乎没有足够的信息。如果可能,您也许可以共享您的日志以供 erd 调试。谢谢
【解决方案2】:

作为一种解决方法,我们需要在我们的项目中扩展 org.robolectric.AndroidManifest,删除对元素的检查,并在自定义测试运行程序中覆盖 createAppManifest(...)。

https://github.com/mapzen/mapzen-android-demo/blob/master/src/test/java/org/robolectric/MapzenAndroidManifest.java#L163

https://github.com/mapzen/mapzen-android-demo/blob/master/src/test/java/com/mapzen/open/support/MapzenTestRunner.java#L100

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多