Multidex 后 Robolectric 单元测试失败

2024-04-06

因此,我最近将 robolectric 3.0 升级与我们的主线合并,这为我们的应用程序添加了 multidex 支持。不幸的是,这带来了不幸的副作用,导致我们的测试失败/无法运行 - 它们只会在第一次尝试安装 MultiDex 失败后停止,堆栈跟踪如下:

java.lang.RuntimeException: java.lang.RuntimeException: Multi dex installation failed (/Users/me/Data/Projects/my-android/myapp/. (Is a directory)).
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:257)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:194)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)

我尝试实现各种解决方案,例如在我的 Multidex.Install 中捕获 RuntimeException (如此处所述https://github.com/robolectric/robolectric/issues/1328 https://github.com/robolectric/robolectric/issues/1328)并使用 Robolectric 提供的影子 MultiDex,但这只是失败并出现 Gradle TaskExecutionException 并以值 255 退出。

有人找到解决这个问题的方法了吗?这确实减慢了我的工作流程。


只需添加多 dex 影子依赖:

testImplementation "org.robolectric:shadows-multidex:4.0.1"

如果您使用 Robolectric

testImplementation "org.robolectric:multidex:3.4.2"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Multidex 后 Robolectric 单元测试失败 的相关文章

  • onActivityResult 中的完成活动不起作用

    我有一对必须同生共死的活动 基本上 AlphaActivity 会做一些工作 然后发送一个意图 startActivityForResult 对于 Beta 活动 当 Beta 活动完成时 我希望它发送一个意图 startActivity
  • android - EditText 打字速度很慢

    我的 EditText 在打字时响应速度很慢 这种滞后现象足以让我找到解决方案 我做了一些研究 发现了一个 SO 线程输入文本时 EditText 滞后 https stackoverflow com questions 6173591 a
  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 在 Android 中的活动、服务和应用程序之间传递变量

    有人可以给我提供以下活动 服务 应用程序组合的示例吗 我拥有这三个 但我已经把我的应用程序弄得一团糟 试图在这个地方传递一堆变量 现在我不知道发生了什么 请注意 我是 Android 新手 最近我一直在努力解决这个问题 因为有很多方法可以实
  • 无法解析符号 FlutterActivity

    我使用 VCS gt Checkout from Version Control 将 flutter 项目从 github 导入到 Android Studio 中 现在我面临的问题是 Cannot resolve symbol Flutt
  • 在 Android 中将应用程序上下文保存到静态变量是否安全?

    我知道在 Android 上使用静态变量是相当危险的 特别是当您将它们引用到活动时 但是 如果我有一个扩展 Application 的类 我们称此类为 App 引用此类的实例是否安全 如果是这样 任何其他类对应用程序上下文进行任何类型的引用
  • MI设备中即使应用程序被杀死,如何运行后台服务

    您好 我正在使用 alaram 管理器运行后台服务 它工作正常 但对于某些 mi 设备 后台服务无法工作 我使用了服务 但它无法工作 如何在 mi 中运行我的后台服务 MI UI有自己的安全选项 所以你需要的不仅仅是上面提到的粘性服务 你需
  • OpenCV InRange 参数

    我在 Android 上使用 OpenCV 来实时查找特定颜色的圆圈 我的第一步是仅保留与我正在寻找的定义颜色相对应的像素 在本例中为红色或绿色 示例图像 https i stack imgur com CIozU jpg 为此 我正在使用
  • 下载图像并显示它

    应用程序的主要目的是下载和显示图像 但是当我尝试启动应用程序时它崩溃了 这是我的代码 private DownloadImageTask task protected void onCreate Bundle savedInstanceSt
  • Cordova 地理定位不适用于 Android

    我想在 Android 上使用地理定位 我用 Apache Cordova 编写应用程序 地理定位在 android 电脑模拟器和 android 手机上均不起作用 I try http cordova apache org docs en
  • invalidateOptionsMenu 在片段中不起作用

    显示或隐藏项目ActionBar根据文本中是否有文本EditText or not 所以 我做了以下事情 public class NounSearch extends android app Fragment EditText seach
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 模拟器:进程已完成,退出代码为 134(被信号 6:SIGABRT 中断)

    我最近刚刚开始在 Mac 上下载 Android Studio 版本 3 0 1 但收到以下错误 模拟器 进程已完成 退出代码为 134 被信号 6 SIGABRT 中断 我按照 Android Studio 教程操作并能够运行模拟器 但在
  • Android:单一活动,多个视图

    我不是 Android 专业人士 尽管我开发了一个包含 50 多个活动的应用程序 这使得该应用程序非常庞大 经过8周的开发 现在出现了一些问题 导致应用程序难以维护和升级 我正在处理的主要问题是 我无法将对象引用传递给活动的构造函数 事实上
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 如何使 tablayout 文本大小相等?

    这就是我所做的 我为文本创建了一种样式
  • WebView 在某些设备上如果不长按则不会滚动

    我有一个 WebView 设置如下 the web view mWebView WebView findViewById R id webView push the url on to the web view mWebView loadU
  • Android应用程序kill事件捕获

    我想在我的应用程序被终止时执行一些操作 可以使用哪种方法来实现此目的 我正在开发 Android 5 0 这个问题的关键在于 您必须了解您的申请是否可以收到任何 当您的应用程序在任何情况下被终止时的额外回调 下面的答案是由德文连线 http
  • Amazon IAP 不会调用 onPurchaseResponse

    我有一个 Android 应用程序 它使用 IAP 我正在发送PurchasingManager initiateGetUserIdRequest 并得到用户识别成功 in onGetUserIdResponse 得到回复后Purchasi

随机推荐

  • MYSQL - 从大表中的第二行选择数据

    我有一个外部第3方程序将数据库实时导出到mysql 我想显示数据以进行报告 所以 我无法更改结构 因为它是实时同步的 表结构是这样的 ID Date Transaction 12 2012 11 01 200 12 2012 11 02 2
  • Android sdk 中缺少 Cordova gradle 包装器

    我在 windows7 x64 上 安装了今天最新的稳定版本的 android sdk studio 通过 android studio 捆绑包 因为它现在显然是一起发货的 我已经正确配置了环境变量 如您在上面看到的 这是我发出以下命令时得
  • 在 Rails 服务器日志中查看 Resque 日志输出

    我在 Puma 服务器上有一个 Rails 4 应用程序 其中 Resque Resque Scheduler 正在运行后台作业 我想知道的是如何将两个 Resque 工作人员的日志输出合并到我的服务器日志中 或者 这是不可能的 我如何查看
  • 在本地 WiFi 网络上服务 Django 项目

    I used python manage runserver 0 0 0 0 8000 启动服务器 以便我可以从 wifi 网络上的其他计算机访问该项目 但是当我在另一台计算机上浏览到 internet ipaddress 8000 时 该
  • 适用于 iOS 的 Facebook SDK:未显示 FBSDKShareDialog

    我是 iOS 新手 我想分享一个使用 Facebook SDK for iOS 的链接 我的代码如下 IBAction func shareVoucherUsingFacebook sender UIButton print Faceboo
  • CompletableFuture 已完成,但有异常

    CompletableFuture completedFuture https docs oracle com javase 9 docs api java util concurrent CompletableFuture html co
  • 为什么这个 random() 分布看起来不对称?

    编辑 这是使用 Google Chrome 36 我正在摆弄 html5 画布 生成随机分布在立方体内的点并将其投影到 2D 画布上 令人惊讶的是 结果看起来一点也不对称 我怀疑 Javascript 的 Math random 让我失望了
  • 如何让log4j记录到文件并打印到控制台

    我可以将日志发送到控制台 但似乎无法将其发送到日志文件 这是我的properties file log4j rootLogger DEBUG LOG stdout log4j appender stdout org apache log4j
  • 在cmake中make install后进行后处理

    我正在尝试在 make install 末尾制作可执行文件的副本 我需要做类似的事情 cp bin prog bin prog1 我已将以下内容添加为 CMakelists txt 中的最后一行 install CODE execute p
  • 如何禁用默认视频播放器的画中画模式

    当用户尝试在我的应用程序中播放视频时 如何在 iPad 上的 iOS9 中使用 Swift 禁用画中画按钮 模式 默认 AVPlayerLayers 不会使用画中画 除非您使用AV画中画控制器 https developer apple c
  • 如何创建 DOM 构造函数的实例?

    当我尝试创建 DOM 的 HTMLElement 实例时 var oElement new HTMLElement 它抛出 类型错误 非法构造函数 为什么我们不能实例化 DOM 的构造函数 有办法做到吗 谢谢 要使用 Javascript
  • 自动缩进:smartindent 和 indentexpr

    当我编辑 Python 文件时 例如 def my func print Something lt CURSOR IS HERE 我想通过输入添加评论 该行会自动重新缩进到该行的开头 def my func print Something
  • createwindow(...)之后,如何给窗口赋予颜色?

    我创建了一个窗口 其句柄是handle parent 然后我创建了一个子窗口 如下所示 hwnd child CreateWindow child class name T WS CHILDWINDOW 0 0 0 0 hwnd paren
  • 使用 Rails 进行带宽管理?

    我想知道是否有人知道一种可以在 Rails 应用程序中以不依赖于 Web 服务器的方式管理带宽的方法 例如 每个帐户都有带宽限制 进出境交通是否会从每月津贴中扣除 一种选择是在 application rb 中添加 after filter
  • 如何在 IE8 中禁用 body.blur()?

    我正在开发一个在 IE8 中运行的企业 Web 应用程序 它出现blur 在主体上调用导致 IE 窗口被发送到后台 不幸的是 此代码位于由供应商控制的应用程序的一部分中 有什么可能的方法来预防blur 在不修改实际调用的代码的情况下在主体上
  • 在 Rails 控制器操作中渲染 html 时模板丢失错误

    我正在尝试使用 render html 从控制器操作中渲染原始 html class SomeController lt ApplicationController def raw html render html Some body te
  • Seaborn Jointplot 为每个类别添加颜色

    我想使用seaborn绘制2个变量的相关图jointplot 我尝试了很多不同的方法 但我无法根据类别为点添加颜色 这是我的代码 import numpy as np import seaborn as sns import matplot
  • 使用 EEPlus 读取 Excel 文件时,Excel 日期字段值与 C# dateTime 相差 1 天

    我在使用 EEPlus 库从 Excel xlsx 文件获取正确的日期字段值时遇到问题 特殊的问题是 在 excel 中我有例如1900 01 04 但在 C 中我得到 1900 01 03 我有一个想法 当我从 Excel 读取日期值时
  • puppeteer 无法在浏览器中加载 chrome 扩展

    这是我第一次使用 puppeteer 我想打开 google chrome 页面并导航到我已安装的 chrome 扩展 我尝试启用 chrome 扩展 但是当我在中运行脚本时headless false模式下浏览器会弹出 没有我的扩展程序
  • Multidex 后 Robolectric 单元测试失败

    因此 我最近将 robolectric 3 0 升级与我们的主线合并 这为我们的应用程序添加了 multidex 支持 不幸的是 这带来了不幸的副作用 导致我们的测试失败 无法运行 它们只会在第一次尝试安装 MultiDex 失败后停止 堆