相关疑难解决方法(0)

Android Studio - 使用Junit 4.12"!!! JUnit 3.8或更高版本预期:"

试过这篇文章的建议,但我仍然得到错误:

!!! 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)

Process finished with exit code -3
Run Code Online (Sandbox Code Playgroud)

不知道该怎么做.试图重新组织Junit依赖的顺序.没有运气,其他人得到这个问题?

Android Studio V. 1.2.1.1

java junit android android-studio

32
推荐指数
7
解决办法
2万
查看次数

!预期JUnit版本3.8或更高版本

我的Android工作室项目有一个依赖于android框架的app模块,我创建了一个名为domain的新模块,它只包含纯java类和一些测试类.

在这个模块的build.gradle文件中,我添加了junit和mockito库用于测试目的,如下所示:

apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
dependencies {
    testCompile 'junit:junit:4.11'
    testCompile 'org.mockito:mockito-core:1.9.5'
    compile project(':common')
    compile project(':model')
    //test dependencies
}
Run Code Online (Sandbox Code Playgroud)

但是!!! JUnit version 3.8 or later expected每当我尝试执行测试类时,Android Studio都会给我错误消息.

此问题的所有建议解决方案是打开项目结构| 模块| 依赖关系,并将junit-4.7.jar向上移动,以便它在类路径中的Android 1.6 Platform之前出现.

事实上,我试图实现这个解决方案,但问题仍然存在. 我的依赖结构的图像

有关如何解决此问题的任何想法?

java junit android

25
推荐指数
3
解决办法
2万
查看次数

无法在旧版本的JUnit上运行简单的JUnit TestCase

我试图在JUnit的3.7版本上运行一个简单的JUnit测试用例(我无法将其升级到最新版本)

运行IntelliJ,当我尝试运行JUnit测试用例时,我收到以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:108)
Caused by: java.lang.ClassNotFoundException: junit.textui.ResultPrinter
    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:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    ... 3 more

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

我的类路径上有IntelliJ版本10.0.2,JUnit 3.7和IntelliJ插件,它声明它支持3.x和4.x

我可以看到IntelliJ执行以下操作(添加了中断以使其更具可读性)

"C:\Program Files\Java\jdk1.6.0_20\bin\java" -Didea.launcher.port=7532 
    "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 10.0\bin" 
    -Dfile.encoding=windows-1252 
    -classpath "C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 10.0\lib\idea_rt.jar;
                C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 10.0\plugins\junit\lib\junit-rt.jar;
                C:\Program Files\Java\jdk1.6.0_20\jre\lib\alt-rt.jar;
                C:\Program Files\Java\jdk1.6.0_20\jre\lib\charsets.jar;
                C:\Program Files\Java\jdk1.6.0_20\jre\lib\deploy.jar;
                C:\Program Files\Java\jdk1.6.0_20\jre\lib\javaws.jar;
                C:\Program Files\Java\jdk1.6.0_20\jre\lib\jce.jar; …
Run Code Online (Sandbox Code Playgroud)

java junit intellij-idea junit3

9
推荐指数
1
解决办法
9494
查看次数

保持Android Studio的特定依赖顺序

我正在尝试在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)
    ...
Run Code Online (Sandbox Code Playgroud)

我也看到了类路径中所有必需的依赖项.要修复此错误,我需要在android sdk依赖项之前放置junit4依赖项.不幸的是我没有在Project Structure部分看到模块,我不知道如何编辑iml文件来存档它.

这是我的项目结构的截图: 在此输入图像描述

我的gradle文件:

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

我选择了AS中的testLocal风味.

dependencies android intellij-idea gradle android-studio

6
推荐指数
1
解决办法
5760
查看次数

在Android Studio中的Android项目中运行快速JUnit测试的最佳方法

我在Android Studio项目中有一些简单的旧Java类和简单的JUnit测试.他们目前住在我的Android模块中.如果我将它们作为Android测试运行它们会很好地通过,但它们确实很慢,因为它需要启动或连接到模拟器.

如果我尝试运行一个作为JUnit测试,我遇到了!!! JUnit version 3.8 or later expectedJUnit版本问题.此答案解释了如何解决该问题.不幸的是,我然后点击了java.lang.NoClassDefFoundError: junit/textui/ResultPrinter,我无法弄清楚如何解决.

然后我尝试将我的JUnit测试移动到依赖于Android模块的单独Java模块中.一切都很好.我添加了一个新配置来启动JUnit测试(:MyJUnitTests:test),但测试失败了package com.myproject.util does not exist.看起来类似路径可能不包括依赖Android模块中的类.

有人知道如何解决这个类路径问题吗?我看了很多相关的答案,但似乎没有一个对我有用.或者尝试将JUnit测试保存在自己的模块中是一个坏主意?

我可以让JUnit测试快速运行并传递,如果我将我的普通Java类及其JUnit测试移动到一个完全独立的模块(例如此处),并反转依赖性,以便Android模块依赖于Java模块.这是首选解决方案吗?

junit android unit-testing gradle android-studio

6
推荐指数
1
解决办法
2243
查看次数