热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模拟器上的GradleJUnitEspressoconnectedAndroidTestjava.lang.IncompatibleClassChangeError

如何解决《模拟器上的GradleJUnitEspressoconnectedAndroidTestjava.lang.IncompatibleClassChangeError》经验,为你挑选了1个好方法。

我有一个简单的单元测试静态方法并在模拟器上运行它们.(目标是在云CI上运行,因此我在模拟器上进行测试.)

Gradle 2.2.1仿真器Android 5.0

我在控制台上使用这些步骤.

    android create avd --force -n test -t"android-21"

    模拟器-avd test -no-skin -no-audio -no-window&

    adb wait-for-device

    adb shell输入keyevent 82&

    gradle clean installDebug

    gradle connectedAndroidTest

的build.gradle

dependencies {
    ...

    androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') {
        exclude group: 'com.squareup.dagger'
        exclude group: 'com.squareup.dagger:dagger:1.2.1'
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 21

        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }

    sourceSets {
        androidTest.setRoot('src/androidTest')
    }
}

错误日志是

Tests on test(AVD) - 5.0 failed: Instrumentation run failed due to 'java.lang.IncompatibleClassChangeError'

com.android.builder.testing.ConnectedDevice > hasTests[test(AVD) - 5.0] FAILED
No tests found.

什么会产生这个错误?



1> albodelu..:

简要回复:

这似乎是一个很好的联系java.lang.IncompatibleClassChangeError.如果你在CI上尝试:

在等待设备之后,仿真器没有完全启动,它没有为您的测试做好准备,并且由于超时而未安装您的应用程序,因此没有执行测试,并且构建失败,因为添加了新行为以提醒您.

您可以adb wait-for-device通过等待stopped状态(完全启动)检查的循环替换,adb -e shell getprop init.svc.bootanim因为公共域中的此脚本会执行此操作.更多信息在这里.

可能的CI问题,Double Espresso已弃用且Espresso 2.0已发布:

关于CI,没有发现任何测试:

我在这里回答了另一个问题,但具体针对Travis-ci.类似的错误,但由于使用的脚本被窃听.如果您运行,gradle installDebug --debug您将了解有关错误的更多信息(在此处共享日志).

但是在CI服务器上运行相同的步骤,如果我是对的,你会看到由ShellCommandUnresponsiveException引起的InstallException两分钟INSTALL_TIMEOUT.您可以使用环境变量ADB_INSTALL_TIMEOUT=6#minutes 来增加此值,但这不是您现在的问题.

如果您首先在本地运行它,请尝试不要-no-window(所以你看到它)或添加-no-boot-anim(加速它但与wait-for-emulator脚本不兼容)或使用adb wait-for-device && sleep 300(以确保模拟器完全启动).

关于Espresso:

Double Espresso已弃用,因为Espresso 2.0现已推出.Double Espresso是Espresso 1.1的纯Gradle端口,Jake Wharton在两周前发布2.0版时弃用了它.

他们更新了wiki 和JavaDoc(他们将其移至android.com).

您现在可以使用Android支持存储库下载最新版本.

谷歌发布了新样本:

示例先决条件:Android SDK v21,Android Build Tools v21.1.2,Android支持存储库.

这些示例使用Gradle构建系统.要构建项目,请输入项目目录并使用./gradlew汇编命令或使用Android Studio中的"导入项目".使用./gradlew connectedCheck在连接的仿真器或设备上运行测试.

关于Gradle任务:

从Android任务和运行测试(Gradle插件用户指南):

assemble 组装项目输出的任务

connectedCheck 运行需要连接设备或仿真器的检查.

需要连接设备的检查是在调用锚点任务的情况下启动的connectedCheck.这取决于任务androidTest,因此将运行它.此任务执行以下操作:

确保构建应用程序和测试应用程序(取决于assembleDebug和assembleTest)

安装两个应用

运行测试

卸载这两个应用.

所以我认为:

这是迁移到Espresso 2.0(并避免依赖性?问题)的好时机.

你需要等待模拟器停止状态,我建议这个链接来理解它.

您不需要特定install*任务,可以替换assemblebuild(包括lint)和使用connectedCheck(包括connectedAndroidTest).

如果安装了多个ABI,您需要选择一个(并回答否): - echo no | android create avd -f -n test -t $ANDROID_TARGET -b $ANDROID_ABI

我会在您选择的CI服务器上尝试他们的样本,作为遵循目标的第二步.


推荐阅读
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 我正在为我的Symfony2项目构建一个搜索功能,我为它编写了SQL,如下所示:SELECTdlc.title,dlc.description,dlc.keywordsFROMSh ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
author-avatar
我是你的特效
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有