保持 Android Studio 的特定依赖顺序

2024-04-07

我正在尝试在 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: enter image description here

我的等级文件:

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(使用前将#替换为@)

保持 Android Studio 的特定依赖顺序 的相关文章

随机推荐

  • 在 for 循环的开头组合数组 (Bash)

    可以做这样的事情吗 a 1 2 3 b 4 5 6 for num in a b or for num in a b do echo num done Outputs 1 2 3 4 5 6 我知道你可以先将它们组合起来 然后循环它们 但是
  • 优化截击

    我在android中使用Volley库 我在浏览器中运行相同的url 它在不到一秒的时间内返回 我想知道 如何优化Volley 不清楚 Cache Queue Take 代表什么以及为什么它是 3 6 秒 或者为什么添加缓存队列获取和网络完
  • 使用 iTExtsharp 将表格添加到现有 PDF 中

    我有一个 PDF 其中有一个表格是动态的 我想在现有 PDF 中动态地将下面的另一个表格添加到该表格中 有什么方法可以在现有 PDF 中的特定位置添加表格 现有表格 不在文档末尾 已完成 然后我想添加我的表格 我该如何添加 请给我推荐一些好
  • Nginx WordPress

    我目前正在尝试让我的 Nginx Mysql Wordpress 在 Fedora 18 x64 上工作 做了以下手册http www howtoing com install wordpress using lamp or lemp on
  • 对城市的区域名称进行地理编码以获取纬度和经度

    我有我所在城市的区域名称列表 我需要相同的纬度和经度 我可以使用任何服务来获取数据吗 我不想使用任何地图 我想进行简单的 api 调用并通过 json 或 xml 获取经纬度 虽然问题已经得到解答 但我想补充一点 谷歌并不是唯一提供地理编码
  • 搜索 django 中表中的所有字段

    如何使用过滤子句在django中搜索表中的所有字段 ex table object filter 表中的任何字段 sumthing Thanks 我同意阿拉斯代尔的观点 但你问题的答案是这样的 from django db models i
  • react-native-google-places-autocomplete 给它一个值,而不仅仅是默认(初始)值

    我有一个工作
  • 在eclipse中播放ogg文件

    所以我试图在我的乒乓球游戏中添加声音 但由于某种原因我似乎无法播放声音 没有错误消息 这意味着路径是正确的 但声音根本不正确玩 以下是我的背景音乐代码 把pong的东西都删掉了 先谢谢了 import java applet Applet
  • Maui-blazor 渐变闪屏

    是否可以设置渐变启动画面 在例子中 https learn microsoft com en us dotnet maui user interface images splashscreen tabs android
  • Misra 2012 不允许在不同指针之间进行转换的基本原理

    我目前正在开发一个项目 该项目要求代码符合 Misra 2012 标准 在整个项目中 我们有很多必需的 Misra 警告 告诉我们无法将指向一种类型的指针转 换为指向另一种类型的指针 事情很简单void memcpy void to con
  • GET/POST 参数数量超出设置。DATA_UPLOAD_MAX_NUMBER_FIELDS

    我收到错误 GET POST 参数的数量超出了设置 DATA UPLOAD MAX NUMBER FIELDS 错误表明 TooManyFieldsSent 在 api upload 我在我的views py def upload requ
  • 如何使用 vaadin 网格导出到 csv/excel?

    在 Vaadin 14 中 我正在创建网格 并希望用户有一种稳定 简单的方法将网格内容导出到 csv 或最好是 Excel 为此 我很惊讶 Vaadin 似乎没有提供此功能 因此必须使用第 3 方开发人员插件 例如https vaadin
  • 三个点应该怎么写?

    简单的问题 我想设置一个 TextView 其中我想要三个点 省略号 喜欢 Read more 到字符串中 这三个点应该怎么写呢 在字符串文字中写入 u2026 看http www fileformat info info unicode
  • Google Maps API v3 - 为什么没有事件上下文?

    第一次使用 Google Maps API v3 我得到了一张带有一堆标记的地图 我想做到这一点 以便当您单击其中一个时 将显示一个特定的信息窗口 特定于您单击的标记 我真的很惊讶点击事件没有告诉您被点击的实际标记 我知道有一个解决方案使用
  • 使用批量/更新方法将“标签”应用于数百万个文档

    我们的 ElasticSearch 实例中有大约 55 000 000 个文档 我们有一个带有 user ids 的 CSV 文件 最大的 CSV 有 9M 个条目 我们的文档以 user id 作为键 所以这很方便 我发布这个问题是因为我
  • 基于欧几里德距离的 3D 连接点标记

    目前 我正在开发一个项目 该项目尝试通过将连通性指定为最小欧几里德距离来对数据集中的 3d 点进行分组 我现在的算法只是简单的洪水填充的 3D 改编 size t PointSegmenter growRegion size t seed
  • C# 特定进程的参数,使用 url 打开浏览器

    我正在编写一个应用程序 该应用程序应该通过单击按钮来打开某个进程 但是 用户可以添加新按钮 我使用以下代码来执行单击按钮时启动进程的操作 private void StartProcess string path ProcessStartI
  • 查找两首或多首歌曲交集的算法

    假设我们有一堆收音机 每个收音机都一遍又一遍地循环播放同一首歌 是否可以同步所有收音机中的所有歌曲 我们能找到一个时间从头听到所有歌曲吗 为了简单起见 我们会说我们只有两个收音机 我有以下公式 c 和 z 代表歌曲的长度 以秒为单位 a 和
  • Postfix + Django:SMTPException:服务器不支持 SMTP AUTH 扩展 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 Postfix 完全是新手 只需为 Ubuntu 设置默认的 Postfix 通过 telnet 测试它 它可以正常发送邮件 但是当我尝试通过
  • 保持 Android Studio 的特定依赖顺序

    我正在尝试在 Android Studio 中使用 Robolectric 运行单元测试 我快到了 我明白了 JUnit version 3 8 or later expected java lang RuntimeException St