我一直在撞墙一段时间试图让maven,robolectric,actionbar sherlock和intellij,所有人都玩得很好。我现在已经放弃了使用intellij进行构建,并且专注于maven。
当我跳过maven构建中的测试时,我有一个带有操作栏的应用程序(这告诉我,我很高兴继续使用ActionBar集成前端)。 Intelliife构建在ManifestParsingTest.java上失败,抱怨它不知道junit在哪里(以及其他问题)。
Robolectric集成
我已经在项目中成功运行了Robolectric。我将文件从Jake Wharton's gist复制到src/test/java/com/blah/blah/support/
(生成ShadowSherlockFragmentActivity.java
的{{1}}除外)并将此行放在我的自定义测试运行器的构造函数中(生于{{1}文件夹):
src/test/java/com/blah/blah/support/shadows/
mvn错误
我遇到了这些构建错误(IntelliJ对于相同的东西也有红色波浪形):
support
的pom.xml
ActionBarSherlock.registerImplementation(ActionBarSherlockRobolectric.class);
是否有一些我缺少的项目配置?
答案 0 :(得分:10)
在Square,为了支持这个用例,我们使用a modified version of Robolectric。我们正在与Pivotal合作,让我们不再使用fork和上游必要的更改到主存储库中。所需的更改是挂钩到资源加载系统。这些方法目前是私有的,这是导致编译失败的原因。
Pivotal并没有以任何常见的方式完全发布版本,因此如果更改确实使其成为上游版本,则可能需要使用SNAPSHOT
版本一段时间。
答案 1 :(得分:2)
我可以让它发挥作用。
试试这个:
将robolectric和junit依赖项移至最后。
表示构建标记中的src和测试路径,在finalname之后和插件之前。
从maven工具栏重建并运行测试。
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.0.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r6</version>
</dependency>
<dependency>
<groupId>org.roboguice</groupId>
<artifactId>roboguice</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.octo.android.robospice</groupId>
<artifactId>robospice-spring-android</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.9</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.actionbarsherlock</groupId>
<artifactId>actionbarsherlock</artifactId>
<version>4.2.0</version>
<type>apklib</type>
</dependency>
<dependency>
<groupId>com.actionbarsherlock</groupId>
<artifactId>actionbarsherlock</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>com.pivotallabs</groupId>
<artifactId>robolectric</artifactId>
<version>1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<plugins>
<plugin>
<!-- See http://code.google.com/p/maven-android-plugin/ -->
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<sdk>
<platform>15</platform>
</sdk>
</configuration>
<extensions>true</extensions>
</plugin>
</plugins>
</build>