Android Studio + Robolectric + Gradle Class未找到例外

sav*_*ion 10 tdd android robolectric robolectric-gradle-plugin

我从https://github.com/robolectric/deckard-gradle下载了Robolectric deckard-gradle项目并导入到Android Studio.

在我第一次跑步时,我得到了

!!! 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)
Run Code Online (Sandbox Code Playgroud)

错误,我从.iml修复此问题.

然后我得到了:

Class Not Found "my test class"
Run Code Online (Sandbox Code Playgroud)

我尝试了几十种解决方案,我在谷歌中发现了这个问题,但没有一个有效.

luc*_*ler 5

更新:Android Studio 1.1.0为IDE添加了JUNIT 4测试支持.有关详情,请访问:https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support.这应该修复STUB异常.

Alex的选项之一是正确答案:我现在在两个项目中使用它,很遗憾你必须这样做,但这就是你现在所能做的一切.

详细步骤如下:

  1. 当显示STUB EXCEPTION时,将第一条灰线完全复制到编辑器中.
  2. 在这一行中,删除-classpath之前的所有内容以及最后一个.jar条目之后的所有内容.(就像亚历克斯所说的,类路径,但也删除其余的后)
  3. 搜索junit并移动类似于以下的行/path/in/filesystem/.gradle/caches/modules-2/files-2.1/junit/junit/4.11/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar:到开头直接在"-classpath"指令之后的依赖项.
  4. 将测试类输出目录添加到类路径的末尾,如-classpath"/dependency1:/dependency2:/...:/Users/user/path/to/project/app/build/test-classes"
  5. 转到下拉菜单中的"运行配置",开始测试或应用程序
  6. 在您的junit测试配置中(您之前尝试运行,而不是Android测试)将上面的文本添加为​​VM选项.
  7. 按确定,运行测试并瞧,它的工作原理!

顺便说一句,为了生成输出测试源,我必须添加

apply plugin: 'idea'
idea {
    module {
        testOutputDir = file('build/test-classes/debug')
    }
}
Run Code Online (Sandbox Code Playgroud)

到模块的build.gradle

如果在尝试使用ui时仍然出现错误,请转到android studio中包含的终端并使用./gradle clean check(或等效命令)对项目和测试运行lint检查.如果您的测试出现任何问题,您将收到通知,并可以在html页面上查看结果.