Android Studio - 使用 Junit 4.12 “!!!预计 JUnit 版本 3.8 或更高版本:”

Posted

技术标签:

【中文标题】Android Studio - 使用 Junit 4.12 “!!!预计 JUnit 版本 3.8 或更高版本:”【英文标题】:Android Studio - with Junit 4.12 “!!! JUnit version 3.8 or later expected:” 【发布时间】:2015-08-18 04:58:29 【问题描述】:

尝试了this帖子上的建议,但我仍然收到错误:

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

不知道从这里做什么。尝试重新组织 Junit 依赖项的顺序。不走运,还有其他人遇到这个问题吗?

android Studio V. 1.2.1.1

【问题讨论】:

嘿,你找到解决这个问题的方法了吗?我也遇到了。 我可以通过删除unitTest.returnDefaultValues来解决它,检查:***.com/a/44820309/965569 【参考方案1】:

解决了这个问题。我在Android Studio 中将JUnit 测试作为标准的“JUnit 测试”运行。我通过将配置重置为Android Test 解决了这个问题。

【讨论】:

这对我有用,但花了一点时间才弄清楚如何创建Android Test。进入Edit Configurations,在左侧菜单中选择Android Tests,点击+,右侧填写详细信息。 如果您想将测试作为标准 Junit 测试运行,请确保您在 android studio 中的构建变体设置为单元测试,然后创建一个 Junit 测试配置。【参考方案2】:

只是增加一种情况。在使用旧 AGP (3.3.2) 和 Gradle (4.10.2) 的项目上将 Android Studio 更新到 4.1 后,我遇到了这个错误。最终为我解决的问题是从 gradle 依赖项中删除 android.test.runner 库,即从应用程序的模块 build.gradle 中删除以下行:

useLibrary 'android.test.runner'

我可能很幸运,实际上不需要库提供的任何类来进行单元测试或仪器测试。

【讨论】:

这也为我解决了这个问题。谢谢! 更新到 Android Studio 4.1 后这对我也有用!非常感谢你发布这个!你为我节省了几个小时的调试时间。干杯 也为我在 Android Studio 4.1 上修复了它!非常感谢! :-) 在 Android Studio 4.1 上修复了它 还必须删除 useLibrary 'android.test.base'useLibrary 'android.test.mock' - 谢谢!【参考方案3】:

我通过将 "testCompile 'junit:junit:4.12'" 移动到 build.gradle 依赖块中的第一个顺序来解决这个问题

【讨论】:

【参考方案4】:

如果您已使用最新的 gradle plygin 将 android studio 版本更新到 4.1。请注释掉

// useLibrary 'android.test.runner' 它将为您修复错误。

【讨论】:

【参考方案5】:

这显然是 Android Studio 4.1 的问题。已经有一张公开的票:https://issuetracker.google.com/issues/170328018

根据上面的错误单,真正为我解决问题的是重新安装 Android 11 (API 30) SDK:

"...构建的 API 30 模拟 jar 存在问题 不正确。您可以打开 Android Studio SDK Manager 并尝试 请卸载 R SDK 或任何 Android SDK Platform 30?这 当您尝试重建后,Gradle build 将自动安装它 删除 R SDK。”

【讨论】:

【参考方案6】:

在自动更新项目后将旧项目打开到最新的 Android Studio 2.3 时遇到此问题。

Android Studio 支持“Android JUnit”测试,该测试应使用当前主机 JRE 运行并正确支持 JUnit 4+。该错误是由于使用了错误的 JRE。

通过使用编辑配置解决>选择Android JUnit配置>编辑JRE。选择任何选项,使用 Apply,然后将其更改回“默认(Android 平台)”以使其正常工作。

【讨论】:

【参考方案7】:

以下修复是您需要在您创建的每个新课程上执行的变通和重复任务。我在 Android Studio 上的项目中使用了 Gradle。

第 1 步: 转到运行-> 编辑配置 Option

第 2 步: 对于每个 JUnit 测试配置,更改以下内容并将其添加到字段中: a) JRE:选择默认值。将其更改为您 PC 上的 JRE 版本,您可以在下拉列表中选择该版本。到今天为止,它的 1.8 b)在启动字段之前:单击“+”,选择您的模块并将任务添加为“clean compileTestJava”。将其移至列表顶部 JUnit test configuration

第 3 步:应用更改并现在运行您的 java 类。

【讨论】:

【参考方案8】:

我遇到了同样的错误,我通过在 Android Studio 中的“编辑配置...”下更新 JRE 值来修复它,我改用 API 28,然后它工作了。请检查图片以供参考...

【讨论】:

先生,您是一位学者,一位绅士!!谢谢 - 你的固定工作。 我很高兴,最好的问候!【参考方案9】:

就我而言,我只是忘记了我已将构建变体更改为“发布”。切换回“调试”修复了一切。 FML。

【讨论】:

【参考方案10】:

运行“Android JUNit”配置并在 gradle 中使用 JUnit 4.12 无助于解决此问题。

我需要在运行配置中手动选择 JREAndroid API 27 Platform 而不是“默认”来解决问题。

【讨论】:

【参考方案11】:

为了解决这个问题,我将“JRE”设置为“1.8”。这是在“编辑配置”下

【讨论】:

这对我有用,在使用 Robolectric 进行单元测试时。【参考方案12】:

我必须根据these instructions 更新 Gradle 设置文件。我刚刚添加了一行

testImplementation 'junit:junit:4.12'

到我的应用程序的build.gradle 文件的dependencies 块。如果您检查 Android Studio 中的“项目”选项卡(您可以在其中查看源代码文件),则应该有一个“Gradle 脚本”部分。查找以您的包命名的 build.gradle 文件并将该行添加到 dependencies 块中,然后单击应该出现的“立即同步”提示。

【讨论】:

【参考方案13】:

当我将新项目添加到工作区时,我也遇到了类似的错误。可能他们(新项目)会升级 Junit 版本或强制该项目应始终使用特定版本。

在这种情况下,我关闭了项目(全部)以及原始工作区并在新工作区中打开。

【讨论】:

【参考方案14】:

我已经设法通过简单地编辑项目的 app.iml 并从底部移动订单条目来解决它:

<orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />

【讨论】:

【参考方案15】:

就我而言,问题在于导入, 应该是:

import org.junit.Assert.assertEquals

【讨论】:

以上是关于Android Studio - 使用 Junit 4.12 “!!!预计 JUnit 版本 3.8 或更高版本:”的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio下使用Junit框架测试数组和

Android Studio出错

Android Studio - Junit 4 - 在所有测试之前运行代码

使用基于 Gradle 的配置时在 Android Studio (IntelliJ) 上运行简单的 JUnit 测试

在Android Studio进行“简单配置”单元测试(Android Junit)

错误记录Android Studio 编译时 lint 检查报错 ( Could not resolve junit:junit:4.+. )