Android 的代码覆盖率 (calabash-android BDD)

2023-12-25

我正在使用测试我的 Android 应用程序葫芦安卓 https://github.com/calabash/calabash-android它提供了它自己的“测试项目”,以及一个重命名其包以反映测试下的应用程序的脚本,然后使用 InstrumentationTestRunner 子类:

adb shell am instrument -w -e class sh.calaba.instrumentationbackend.InstrumentationBackend #{ENV['TEST_PACKAGE_NAME']}/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner

我会接受任何允许我为 Android 应用程序生成类似于 Emma 或 Cobertura 的代码覆盖率报告的答案,并在 calabash-android 中测试时收集数据。

为了让艾玛工作,我......

  • 尝试跟随这些说明 http://code.google.com/p/maven-android-plugin/wiki/EmmaMaven让 Maven 来构建我的项目(因为我已经很久没有使用 ant 了)。 Acoverage.em文件生成于target/emma
  • 修改了 calabash-android 脚本,添加“-e coverage true"
  • 当我运行 calabash-android 时,我最终看到“生成的覆盖数据到 /data/data/my.project/files/coverage.ec”
  • adb -e pull /data/data/my.project/files/coverage.ec coverage.ec

...所以现在我应该能够运行:

  • java -cp $ANDROID_HOME/tools/lib/emma.jar emma report -r html -in target/emma/coverage.em,coverage.ec

but我收到错误:

EMMA: processing input files...
java.io.UTFDataFormatException: malformed input around byte 107

...所以我认为有问题Android Maven 插件 https://github.com/calabash/calabash-android,我正在尝试找出如何生成coverage.em文件。我已经跑了”android update project -p ." and "ant emma" and "ant emma debug", but 我在任何地方都找不到coverage.em...

...生成的 build.xml 文件似乎意味着只有在运行“ant emma test”时才会生成coverage.em 文件,但我认为这不会起作用,因为测试应用程序是由葫芦-android。

为了让 Cobertura 工作,我......

  • 谷歌搜索了各种形式的“cobertura android”,但似乎没有人有任何运气。
  • Attempted to configure a cobertura profile in my Maven pom file to instrument the classes, but (in Maven 3) I get
    • 关于 log4j 和 ant 具有“InnerClasses”属性的一大堆警告,我应该从源代码重新编译它们
    • com.jayway.maven.plugins.android. Generation2:android-maven-plugin:3.3.0:dex “ANDROID-040-001: 无法执行: Command = /bin/sh -c -cd /path/ 的错误到/myproject && java -jar $ANDOID_HOME/platform-tools/lib/dx.jar --dex ...”

EXCEPTION FROM SIMULATION:
local variable type mismatch: attempt to set or access a value of type 
java.lang.Class using a local variable of type java.lang.reflect.Type[].  
This is symptomatic of .class transformation tools that ignore local variable information.

...这可能就是为什么没人能让 cobertura 在 Android 上运行的原因?


问题是maven-android-plugin使用 emma 版本 2.1.5320,而 Android 工具使用版本 2.0.5312。作为在这里讨论 http://jira.codehaus.org/browse/SONARPLUGINS-655,这两个版本不兼容。

解决方法是在这两个工具中仅使用单一版本。我已经能够通过克隆来让它工作maven-android-pluginrepo,将 emma 依赖项版本设置回 2.0.5312,并将其安装到我的本地存储库。确保待测项目中的 emma 依赖项也是正确的,然后您应该能够生成覆盖范围。

另一种方法是确保所有工具都使用最新版本。我还没有测试过它,但如果你从 Maven 生成报告,它可能会起作用,那时版本将是相同的。您还可以下载最新版本的 emma 并使用该包中的 jar 生成报告。

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

Android 的代码覆盖率 (calabash-android BDD) 的相关文章

  • 确定是否在已取得 root 权限的设备上运行

    我的应用程序具有某些功能 该功能只能在具有 root 权限的设备上运行 与其让此功能在使用时失败 然后向用户显示适当的错误消息 我更喜欢能够先默默地检查 root 是否可用 如果不可用 则首先隐藏相应的选项 有没有办法做到这一点 这是一个类
  • 在phonegap中播放本地声音

    我有一个 wav文件在我的www文件夹 我正在使用 jQuery 和以下代码 警报响起 但声音不播放 难道我做错了什么
  • APK META-INF/library_release.kotlin_module 中复制的重复文件

    我最近通过 JitPack 添加了两个 Android 库 但出现以下错误 Duplicate files copied in APK META INF library release kotlin module 我已经清除了缓存 并尝试使
  • 如何使用 Android 版 Facebook 同步的联系人图片

    我的手机上安装了 Android 版 Facebook 它会自动将联系人列表中人员的 FB 个人资料图片同步到我的手机 我想在我访问的应用程序中使用这些图片ContactsContract PhoneLookup 我真的需要 Faceboo
  • 如何在 StateListDrawable 中设置可绘制对象的 alpha 值?

    我想在按下时更改可绘制对象的 alpha 值 因此 我创建了两个可绘制对象并将它们放入 StateListDrawable 中 并设置按下状态的 alpha 值 但它就是行不通 StateListDrawable content new S
  • 相当于Android中的javax.swing.Timer

    有没有类似的东西javax swing Timer在安卓上 我知道如何创建自己的线程 但是有类似摆动计时器的东西吗 您可能正在寻找课程android os CountDownTimer http developer android com
  • Android 上的硬币识别

    我目前正在开发一个 Android 应用程序 它能够拍摄硬币的现有图像 或者使用内置摄像头扫描单个硬币 非常像 Google Goggles 我正在使用 Android 版 OpenCV 我的问题如下 什么方法最适合使用 OpenCV 在
  • Android,语言文件不起作用

    我现在正在创建一个 Android 应用程序 并尝试为我的母语添加语言文件 但在某种程度上 这对我不起作用 我尝试在两部不同的手机中加载该应用程序 但结果相同 之前创建过语言文件 效果良好 但这次不行 手机设置为瑞典语 语言文件适用于我创建
  • 在 Android 中关闭 Spinner 中的下拉菜单

    在 Android 中打开和关闭微调器时 我需要为箭头图标设置动画 打开微调器时我可以旋转箭头 我只是放了一个setOnTouchListener on the Spinner 当下拉菜单关闭或隐藏时 问题就来了 因为我不知道如何在该操作上
  • Twitter 集成期间获取访问令牌函数行为不当

    我只是想使用 twitter4j 从我的 Android 应用程序向 Twitter 分享文本 首先 我尝试的是我创建了一个新项目 并且这个特定的代码运行成功 然后我在我的应用程序中混合了该特定代码 登录 Twitter 成功完成 之后我发
  • NullPointerException org.chromium.android_webview.AwContents$AwViewMethodsImpl.onDragEvent

    大约 10 天前 我的应用程序开始记录此异常 在开发控制台上看到 java lang NullPointerException at org chromium android webview AwContents AwViewMethods
  • 协程和 Firebase:如何实现类似 Javascript 的 Promise.all()

    在 Javascript 中 您可以同时启动两个 或更多 异步任务 等待它们完成 然后执行某些操作 继续 const firstReturn secondReturn await Promise all firstPromise secon
  • 使用 eclipse 配置mockito 时出现问题。给出错误:java.lang.verifyError

    当我将我的mockito库添加到类路径中 并使用一个简单的mockito示例进行测试时 我尝试使用模拟对象为函数add返回错误的值 我得到java lang verifyerror 以下是用于测试的代码 后面是 logcat Test pu
  • 在 Android SDK 中通过单击按钮更改背景颜色不起作用

    我有一个简单的程序 可以在单击按钮后更改背景颜色 但它不起作用 public class ChangeBackgroundActivity extends Activity Called when the activity is first
  • Android 视图和视图组

    在安卓中ViewGroup继承自View A ViewGroup是一个容器 里面装有Views ViewGroup LinearLayout View TextView 为什么 Android 的人们将这种关系定义为Inheritance而
  • 如何手动添加Android Studio依赖

    我多次尝试向我的项目添加依赖项 但每次都会出现错误 我想添加它们的依赖项是 de hdodenhof circleimageview 1 3 0 and com github bumptech glide glide 3 6 1 所以我想下
  • TYPE_ACCELEROMETER 和 TYPE_LINEAR_ACCELERATION 传感器有什么区别?

    I think TYPE ACCELEROMETER显示设备加速 但是 我不明白什么时候应该使用TYPE LINEAR ACCELERATION 我需要计算移动设备的速度 哪种传感器适合此应用 另外 我读到TYPE LINEAR ACCEL
  • RecyclerView元素更新+异步网络调用

    我有一个按预期工作的回收视图 我的布局中有一个按钮可以填充列表 该按钮应该进行异步调用 根据结果 我更改按钮的外观 这一切都发生得很好 但是 当我单击按钮并快速向下滚动列表时 异步调用的结果会更新新视图的按钮 代替旧视图的视图 我该如何处理
  • android-如何在谷歌地图上将标记的位置显示为地址

    我已经尝试过 commonsware googlemapsv2 教程 特别是在地图上拖动标记 但现在另一个问题困扰着我 问题是如何将标记的当前位置显示为地图下方或上方的地址 字符串 这是我使用的代码 public class MainAct
  • Android 中带有无尽列表视图滚动的 AsyncTask

    我正在创建一个应用程序 其中我需要有无限的滚动列表视图 我不想在我的应用程序中使用任何库 我在网上看到了一些有助于实现此类列表视图的示例 但我的疑问是 当我的数据来自服务器并在异步任务中进行解析时 如何才能拥有无尽的列表视图 如何从滚动异步

随机推荐

  • 我如何将数据传递到我的 SQLite 数据库中

    你好 我对编程很陌生 我最近启动了一个 IONIC 应用程序 然而我被卡住了 我想做一些类似电话簿的东西 你可以在其中获取随机的 JSON 联系人并将它们保存到你的 sqlite 数据库中 我懂了 import Storage from i
  • 如何列出包括点文件但不包括 .和 ..?

    如何得到Dir 包括点文件 例如 gitignore 但不是 and 即 有没有更好的方法可以做到 ls A split n 也许与Dir 以下解决方案很接近 但都包括 Dir glob File FNM DOTMATCH Dir 因此 以
  • 这些在 jQuery 选择器中转义方括号的不同方法有什么区别

    有什么不同在这些不同的方法之间转义 jQuery 选择器中的方括号 有正确或错误的方法 还是这两种方法都正确 我读过不同的答案 包括this https stackoverflow com questions 1466103 jquery
  • 我想知道为什么我的playerIMG无法在pygame中加载

    下面是我的代码 这是我的第一个 pygame 项目 任何帮助将不胜感激 我认为这与 def 玩家 玩家 玩家 pygame display update 代码块 尽管当我使用它时 有时它甚至不会显示我的背景对象 而只显示屏幕填充黑色 imp
  • CSS:Em 舍入误差

    最近 我重写了我正在制作的网站的 CSS 文件 并尝试使用 em 而不是 px 使大多数元素和字体的大小动态化 尺寸可以工作 有点 但至少有一个问题 当使用 em 单位作为盒子的边距 边距 0 25em 时 在 Firefox 中 我在顶部
  • 从 iPhone 模拟器获取图像

    我刚刚创建了一个图像并将其保存在 iPhone 模拟器手机库中 我想查看此图像 不是来自照片库 以从文档资源查看其属性 但我无法访问照片库的内容 Thanks Pankaj 对于 Xcode 6 模拟器图像文件现在位于 Library De
  • 是否可以从 Java 代码调用 Ant 或 NSIS 脚本?

    是否可以在运行时从 Java 代码以编程方式调用 Ant 或 NSIS 脚本 如果是这样 怎么办 You can从 Java 代码调用 ant 脚本 See 本文 http ant apache org manual running htm
  • 如何在调试字符串的函数中获取函数名称?

    我想在每次调用时输出函数名称 我可以轻松复制并粘贴函数名称 但是我想知道是否有快捷方式可以为我完成这项工作 目前我正在做 SlideInfoHeader lynxThreeFile readSlideInfoHeader QDataStre
  • 从用户电子邮件创建哈希/令牌以进行电子邮件验证

    任何人都可以帮我解答如何从用户输入 电子邮件地址 创建安全令牌 或哈希 的问题 我想制作一个用于注册的电子邮件验证系统 用户使用电子邮件地址和密码注册 我想创建一个唯一的 URL 并将其发送给用户 因此出现了问题 我将这些 安全地 存储在临
  • Android通知空指针异常

    我在活动中设置了通知 它按预期创建通知 当我返回主屏幕时 通知仍然在那里 很好 如果我单击通知 它会将我带回到创建它的活动 这太棒了 如果我单击按钮取消通知 则会收到 NullPointerException 这是电话 if notific
  • 简单的 DocumentDb 存储过程

    我正在尝试创建一个简单的 DocumentDb 存储过程以更好地理解其概念 在此示例中 我尝试返回所有 女性 用户 我是否需要关心返回单个匹配文档或多个文档 我的用户对象如下所示 id e85ee3d7 44a5 4250 a116 686
  • 如何仅在大括号之外搜索正则表达式

    我有这个正则表达式变量 var regexp new RegExp RegExp quote myExpression b g 它搜索后面有空格的表达式 RegExp quate 我从中得到如何在javascript中转义正则表达式 htt
  • 为什么使用 jQuery 返回 false 会停止传播,而使用 POJS 则不会?

    这是一个使用 POJS 的 jsfiddle 显示了return false 不会停止事件的传播 http jsfiddle net Ralt Lz2Pw http jsfiddle net Ralt Lz2Pw 这是另一个使用 jQuer
  • Rails PaperClip Attachments,知道是否有图像缩略图?

    我正在使用 Rails 3 回形针 并允许用户将附件上传到附件模型 如果文件是图像 应用程序会生成图像预览 如果文件不是 则仅上传文件 无图像预览 现在我想显示数据库中所有附件的列表 所以我使用attachment attachment l
  • ASP.NET MVC 中的 WebApi [FromUri] 等效项是什么?

    在 WebApi 中 我可以用以下方法装饰控制器操作上的参数 FromUri 如果愿意的话 将 URI 的组件 反序列化 到 POCO 模型中 又名模型绑定 尽管从 2 0 开始就使用 MVC 但我从未将它用于网站 我不知道为什么 在 AS
  • 如何根据 C# 和 .NET 中的周数获取月份

    我怎样才能得到month根据指定的周数 例如 如果获取周数2返回月份1 January 将周数乘以 7 例如 如果周数为 12 则将 12 乘以 7 这将表示已经过去的天数 四舍五入到最接近的周 将该数字除以 30 在示例中 我们计算得出的
  • 使用 mongoose 完成两个异步查询后进行回调

    使用猫鼬 我希望在两个不同的查询完成后进行回调 var team Team find name myteam var games Game find visitor myteam 那么假设我希望这些请求非阻塞并异步执行 如何在 Promis
  • 如何根据控制台输出中的文本使 GitLab 的 CI/CD 作业失败?

    我在用Lerna https github com lerna lerna管理多包存储库 在我的部署工作中 我使用 Lernapublish命令 对我来说 如果包中的代码发生更改 它应该始终向我们的 Artifactory 发布新版本 如果
  • Rails/ActiveRecord - 如何使其更简洁?

    在我看来 我有如下一行 看来我必须经常做这种事情 因为有些字段可以为空 有更好的方法来写这个吗 我可以在模型层处理它 但据我所知 这并不是真正的模型层功能 您可以使用delegate http api rubyonrails org cla
  • Android 的代码覆盖率 (calabash-android BDD)

    我正在使用测试我的 Android 应用程序葫芦安卓 https github com calabash calabash android它提供了它自己的 测试项目 以及一个重命名其包以反映测试下的应用程序的脚本 然后使用 Instrume