2

亲爱的真棒社区,

我决定硬着头皮为我的 Android 应用程序组装一些合适的 TDD/BDD 测试基础设施。我希望将Roboelectric纳入我的单独测试项目中,以防止我不得不为任何远程 Android-y 启动模拟器。要查看我在 (Eclipse ADT 3.8) 环境中导入的内容,请在此处找到 RoboElectricSample 项目。但是我遇到了一个障碍......一切都在顺利编译,我已经解决了熟悉/bin/targetmaven-eclipse 对峙问题,这里的答案我不能给予足够的支持。

但是,在示例项目的测试(全部 87 个)中,只有 7 个通过,其余的则失败;

Caused by: java.lang.ClassNotFoundException: com.pivotallabs.R
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:171)
at org.robolectric.AndroidManifest.getRClass(AndroidManifest.java:100)

目前,我的src/test/java构建输出位置target/test-classes与我的src/main/java构建输出位置在target/classes.

为了完整起见,这里是项目结构;

Roboelectric示例项目结构

这个问答交流似乎表明我可能是在叫错树,但那是一年多以前的事了,m2e-android 插件已经走了很长一段路。最后,这个问题似乎完全反映了我的问题,但可惜没有解决方案。

您可以提供任何帮助来修复我的构建路径,以使/gen/r文件在 Maven 等效项下被识别,这是generated-sources/r最受赞赏的。在将我的应用程序切换到 Roboelectric 之前,我想启动并运行示例应用程序。

4

2 回答 2

1

知道了。

在阅读了针对m2e-android项目的讨论后,我将描述添加到测试类路径中并将修改添加到测试类路径中,如此描述。我还删除了一些现在被Robolectric(例如 dexmaker)和 viola 引入的压倒一切的依赖项,我在 Mockito 旁边运行了运行 Dagger DI 代码的 Android 测试。android.jar bin\classes

现在 TDD 的生活变得更好了。

游戏开始!

于 2013-06-09T01:48:22.383 回答
0

尝试以下内容pom.xml

<build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>gen/r/main/java</source>
                            </sources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>add-resource</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>gen/r/src/main/resources</directory>
                                    <targetPath>resources</targetPath>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
于 2013-06-06T18:19:09.397 回答