RobolectricTestRunner在多模块maven项目中找不到清单文件

时间:2014-03-13 15:48:40

标签: android maven intellij-idea robolectric

让我们从我的设置开始吧。 我有一个多模块maven项目:

ProjectRoot
 \moduleA
 \moduleB

(相关)moduleA的内容:

- AndroidManifest.xml
- src\main\java\HelloWorldActivity
- src\test\java\HelloWorldActivityTest

HelloWorldActivityTest注释为:@RunWith(RoboelectricTestRunner.class)

我的问题是,如果我指定清单位置,它将无法在IntelliJ IDEA或Maven中运行(从命令提示符开始)。

如果我指定位置:“/ moduleA/AndroidManifest.xml”它适用于IntelliJ 如果我将位置指定为“/AndroidManifest.xml”,则它可以在Maven中使用

因此指定的路径将被解释为相对于项目根目录(在Maven的情况下)或项目模块(在IntelliJ的情况下)

为了使它在两种情况下都能正常工作,我现在使用一个丑陋的解决方法,通过在使用maven构建项目时设置属性,如果未设置属性,我会这样做:

System.setProperty("android.manifest", "moduleA/AndroidManifest.xml");
System.setProperty("android.resources", "moduleA/res");
System.setProperty("android.assets", "moduleA/assets");

请告诉我有更好的方法。 不,我不会改变项目结构以拥有一个单独的测试模块(除非你给我一个很好的理由)!

1 个答案:

答案 0 :(得分:0)

设置测试以使用Maven。然后在Intellij中转到编辑配置 - >默认值 - > Junit并将您的“工作目录”更改为 $ MODULE_DIR $ 。您可能必须删除以前的测试运行配置才能使其生效。

enter image description here