我已经成功安装了&为Eclipse配置了M2E Maven插件,以及Android SDK和ADT。
我想从里面 Maven创建Android项目,所以我找到了this文章,其中提供了有关安装Android-Maven插件和使用预先存在的Android-Maven的说明用于初始化项目的原型。
我按照说明去了" T"得到了项目" mavenified"精美。
唯一的问题是,我曾经(并且非常喜欢!)以下典型的Maven目录结构:
src/
main/
resources/
java/
test/
resources/
java/
但是,这个原型似乎不包含src/test/*
目录,只包含src/main/*
树。 如何获得测试"子树"在他们的?
我想我有两个选择:
test/resources
和test/java
源文件夹我甚至不知道从哪里开始寻找第一个选项,坦率地说,我害怕尝试第二个选项!我听说改变原型的目录结构确实搞乱了构建。
有什么建议?我有什么明显的遗失吗?提前谢谢!
答案 0 :(得分:8)
查看“使用入门”页面here中的“备注”部分:
注意:
- 不要在src / test / java中放置想要由Android Maven插件运行的测试。如果您将测试放在那里,Maven将在JVM中将它们作为正常的JUnit测试运行,并在类路径上访问JAR文件,其中包括android.jar。因为android.jar只包含抛出异常的空方法,所以你会得到java.lang.RuntimeException形式的异常:Stub!。相反,测试需要进入src / main / java,在编译过程中它们不会被Maven作为测试运行,但会被包含在apk中并在设备上部署和运行(android.jar具有方法实现)而不是存根)。
- 如果您的JUnit测试没有调用任何Android API(直接或传递),请将它们放在src / test / java中,以便JUnit在本地运行它们比在设备上运行更快。
- 确保Android Maven目标设置为jar-no-fork而不是test-jar-no-fork。即使对于仅包含测试的项目,也要执行此操作。
醇>
<强>更新强>
最合适的“测试”子树IMO是src / test / java,如第二点所述,只要你的JUnit测试纯粹是POJO测试,它不涉及任何Android API调用,你会没事的。
我使用src / test / java进行所有Robolectric junit测试,并在单独的Android测试项目中进行测试测试,所有测试都由maven管理,一切正常。
查看示例MorseFlash项目here,其中包括src / test / java作为示例。