我正在尝试在 Android Studio 中使用 Robolectric 运行单元测试。我快到了 - 我明白了:
!!! JUnit version 3.8 or later expected:
java.lang.RuntimeException: Stub!
at junit.runner.BaseTestRunner.<init>(BaseTestRunner.java:5)
at junit.textui.TestRunner.<init>(TestRunner.java:54)
at junit.textui.TestRunner.<init>(TestRunner.java:48)
at junit.textui.TestRunner.<init>(TestRunner.java:41)
at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:185)
...
我还看到类路径中所有必需的依赖项。要修复此错误,我需要将 junit4 依赖项放在 android sdk 依赖项之前。不幸的是我没有看到模块项目结构部分,我不知道如何编辑iml文件来存档此内容。
Here is screenshot from my project structure:
我的等级文件:
sourceSets {
testLocal {
java.srcDir file('src/test/java')
resources.srcDir file('src/test/resources')
}
}
dependencies {
// compatibility
compile 'android.compatibility:android-support:v4-r13'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
testLocalCompile 'junit:junit:4.11'
testLocalCompile 'org.robolectric:robolectric:2.2'
testLocalCompile 'org.easytesting:fest-assert-core:2.0M10'
}
android {
buildToolsVersion "17"
compileSdkVersion 18
productFlavors {
testLocal{
}
}
}
而我选择了测试本地AS 中的风味。
该问题似乎是由于 Android Studio 重写 `.iml 文件的方式造成的。根据 Pivotal/robolectric/deccard-gradle 开发人员的说法:
注意:Android Studio 会积极地重写您的依赖项列表(您的 .iml 文件)并颠覆上面使用的技术,将 Android SDK 置于类路径的底部。你会得到可怕的存根!每次重新打开项目时都会出现异常(可能更频繁)。出于这个原因,我们目前推荐 IntelliJ;我们希望这个问题能够在未来得到解决。
Source: https://github.com/robolectric/deckard-gradle https://github.com/robolectric/deckard-gradle
显然你可以手动编辑这些文件,但 AS 会在你每次同步项目时重写它们。或者(decard 开发人员表示),您可以使用 IntelliJ IDEA 来获得更稳定的解决方案。
目前,这也是 Robolectric Google 小组上的一个长时间讨论:
https://groups.google.com/forum/#!topic/robolectric/xsOpEwtdTi4 https://groups.google.com/forum/#!topic/robolectric/xsOpEwtdTi4
希望 AS 团队能够尽快解决这个问题。同时运行 Robolectric 和 Espresso 将是 Android 测试的一大进步。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)