Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RobolectrictTestRunner在多模块maven项目中找不到清单文件_Android_Maven_Intellij Idea_Robolectric - Fatal编程技术网

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

Android RobolectrictTestRunner在多模块maven项目中找不到清单文件,android,maven,intellij-idea,robolectric,Android,Maven,Intellij Idea,Robolectric,让我们从我的设置开始。 我有一个多模块maven项目: ProjectRoot \moduleA \moduleB 模块A的相关内容: - AndroidManifest.xml - src\main\java\HelloWorldActivity - src\test\java\HelloWorldActivityTest HelloWorldActivityTest的注释为:@runWithRoboeElectricTestRunner.class 我的问题是,如果我指定清单位置,它

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

ProjectRoot
 \moduleA
 \moduleB
模块A的相关内容:

- AndroidManifest.xml
- src\main\java\HelloWorldActivity
- src\test\java\HelloWorldActivityTest
HelloWorldActivityTest的注释为:@runWithRoboeElectricTestRunner.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");
请告诉我有更好的办法。
不,除非你给我一个很好的理由,否则我不会改变项目结构来拥有一个单独的测试模块

设置测试以与Maven一起使用。然后在Intellij中,进入编辑配置->默认值->Junit并将您的工作目录更改为$MODULE\u DIR$。您可能必须删除以前的测试运行配置才能使其生效