广告
返回顶部
首页 > 资讯 > 移动开发 >Android Unit Test 框架比较
  • 161
分享到

Android Unit Test 框架比较

框架Android 2022-06-06 12:06:32 161人浏览 独家记忆
摘要

  这篇文章列举了现有常见的 Android 单元测试框架,并进行了简单的比较,方便用来进行框架的选型和收藏(毕竟只要收藏了本文,相当于收藏了各大单元测试框架的主页,是不是

  这篇文章列举了现有常见的 Android 单元测试框架,并进行了简单的比较,方便用来进行框架的选型和收藏(毕竟只要收藏了本文,相当于收藏了各大单元测试框架的主页,是不是很棒棒?)。   框架对比的部分会带有一定的偏向性,不过光是把本文当做一个单元测试的工具箱也是蛮顺手的。   Java Tests   JUnit   JUnit 是基于 xUnit 架构实现的单元测试框架。雏形是1998年在 SmallTalk 上实现的 SUnit,后来原作者将它迁移到 Java 上,从此声名大噪。   JUnit 在 Android 官网上出现的频率相当高,是 Android 单元测试的基础框架之一,后面提到的 mock 框架都相当于是在丰富这些基础框架的功能。   要做单元测试的开发者们通常都会在 JUnit 和 TestNG 之间选择一个,个人感觉还是选 JUnit 好一些。(理由在 TestNG 的介绍中)   TestNG   TestNG 是一名软件工程师(Cédric Beust)对 JUnit 的改进,他将对 JUnit 的不满写在了 这里 和 这里 ,感兴趣的可以去看看。   TestNG 对 JUnit 的改进主要在两个方面:   在 JUnit 中,同一个测试类中的不同测试方法是相互独立的,也是说,每个测试方法开始前都会执行一次测试类的构造方法,这让测试方法之间共享某些状态变得不可能   后来 JUnit 对问题1给出了解决方案—— TestSetup ,但是它必须通过静态方法去使用(JUnit 的 TestSetup 因为年代久远,已经没有文档了,估计 JUnit 也觉得这个解决方案不妥,赶紧修复了吧)   事实上,TestNG 要改进的问题在新版本的 JUnit 上已经不是问题了(毕竟那次抱怨都发自2004年)。从官网后一次更新是2015年12月来看,TestNG 社区的活跃程度远不如它的改进对象 JUnit,所以还是乖乖滚回 JUnit 的怀抱好了。   Mockito   Mockito 初是在 EasyMock 的基础上实现的,持续更新到现在,而始祖 EasyMock 已经在2015年停更了。   Mockito 的优势正如它官网说的:   测试代码和验证提示的良好可读性   良好的社区支持   Java 世界中排名能到达前十的明星框架   Features And Motivations   但劣势也同样明显,其实不应该叫做“劣势”,而应该说是因为实现方式所带来的“限制”: What are the limitations of Mockito   不过这些限制也因为 PowerMock 的出现而被化解,所以搭配上 PowerMock 之后,Java 单元测试这边几乎所向披靡。   jMock   jMock 是一款爷爷级的 mock 框架。   在2008年底已经更新到 2.6.0-RC1 版了,结果在2012年底发布 2.6.0-released 版本之后再也没有了消息,花费4年打磨了一个版本,估计作者是气死了吧。   PowerMock   PowerMock 的出现是为了弥补常规 mock 框架的限制问题。Mockito 与 PowerMock 合作紧密,但毕竟不是一伙人,所以后者的大版本更新往往会落后前者一点。   它绕开了 CGLib,直接修改类的字节码,以实现 mock 某个类的目的。这种风骚的操作让 PowerMock 能够做到上面提到的框架做不到的事情:修改静态或私有方法等等。   然而,它把自己定位为高层次框架的插件,所以用它的时候不可避免要带上其他的框架(在 gradle 里引入 PowerMock 的时候会自动引入相关框架的依赖)。如果已经使用了 Mockito 之流,那在后期引入 PowerMock 的时候必须让二者的版本相对应,或者抛弃原来的 Mockito,直接使用 PowerMock 依赖的版本。   JMockit   JMockit 从2014年提交第一个 commit,到现在已经迭代了将近3年的时间。虽然从 GitHub 上面看它的社区并不太活跃,但是却保持着良好的更新频率,现在还在持续更新着。   研究 Android 单元测试好几天了才看到这个框架,真是惭愧。   它相当于一个非插件化的 PowerMock,集成和使用的方式都非常简单。语法上虽然不及 when/thenReturn 这样口语化,但也是一目了然。   所以,一个 JMockit 能搞定的事情,为什么要用 Mockito&PowerMock 组合呢?   Android Test   Robolectric   Robolectric 重写了许多 Android SDK 里的类,使得在 JVM 上进行 Android 测试成为了可能。   按照 文档 中的描述,Shadow class 是用来修改和扩充 Android OS 下的类的行为的,除了可以 shadow 构造方法外,它和 Mockito 的 mock 没有太大区别,所以它并不能作为 Mockito 的扩充来使用。   官网的介绍中也提及了 Mockito,按照它的说法,我们完全可以用 Mockito 来实现 Robolectric 的功能,只不过要我们自己将 Android SDK 和一些 native 方法一个个 mock 掉而已。这部分工作正是 Robolectric 的价值所在。   Espresso & UI Automator   Espresso & UI Automator 这两兄弟都是 Google 官方推荐的 UI 测试框架,其中前者更适合于白盒测试,后者更适合黑盒测试。   根据官方的说法,它们还是有一些区别的:   Espresso:适合应用中的功能性 UI 测试   UI Automator:适合跨系统和已安装应用的跨应用功能性 UI 测试。   但因为目前还没有涉及到这一块的测试,没有深入研究,所以推荐大家还是去官网看看比较好。   Others   Hamcrest   Hamcrest 是一个提供更灵活的 Assertion 的 api 的第三方库。


--结束END--

本文标题: Android Unit Test 框架比较

本文链接: https://www.lsjlt.com/news/28745.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android Unit Test 框架比较
      这篇文章列举了现有常见的 Android 单元测试框架,并进行了简单的比较,方便用来进行框架的选型和收藏(毕竟只要收藏了本文,相当于收藏了各大单元测试框架的主页,是不是...
    99+
    2022-06-06
    框架 Android
  • vue和什么框架比较
    Vue 和 React 比较Vue.js 和 React.js 都是当前非常流行的 JavaScript 框架,二者都针对构建 Web 应用程序。下面就让我们对 Vue 和 React 进行详细比较。性能Vue 的性能较好,因为它使用的是 ...
    99+
    2023-05-24
  • 有哪些Javascript框架比较好
    Javascript作为现代Web开发中的重要支柱之一,一直以来都是开发者最喜爱的语言之一。随着Web技术的不断发展和互联网应用的不断丰富,Javascript的应用范围也越来越广泛。但是,虽然Javascript是一门十分灵活和强大的语言...
    99+
    2023-05-14
  • GO框架和Laravel:一个比较分析
    随着互联网的发展,Web开发已经成为了一个非常重要的领域。而作为Web开发中的两个重要框架,GO框架和Laravel在业界都有着很高的声誉。那么这两个框架各自的优缺点是什么呢?下面我们来进行一个比较分析。 一、性能比较 首先,我们来看一下...
    99+
    2023-10-14
    框架 javascript laravel
  • 如何进行Keras vs PyTorch框架比较
    如何进行Keras vs PyTorch框架比较,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在 Keras 与 PyTorch 的对比中,作者还给出了相同神经...
    99+
    2023-06-04
  • Bean复制的几种框架性能比较
    本篇内容介绍了“Bean复制的几种框架性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!比较的是四种复制的方式,分别为Apache的Be...
    99+
    2023-06-15
  • 个人建站用什么框架比较好
    个人建站常用的框架有zblog和wordpresszblogZblog是一款基于ASP+ACCESS的个人Blog系统,其简单易学,尤其适合新手学习使用,且支持页面主题及样式更新,支持静态化配置 。Zblog的插件和模板很丰富,可以利用各种...
    99+
    2022-10-04
  • Python几种比较常见的测试框架
    python 几种常见的测试框架 unittest 参考文档: https://docs.python.org/3/library/unittest.html unittest笔记 The unittest unit test...
    99+
    2023-01-31
    几种 框架 常见
  • Android注解框架对比分析
    Java的注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,标记可以加在包,类,属性,方法,本地变量上。然后你可以写一个注解处理器去解析处理...
    99+
    2022-06-06
    框架 Android
  • PHP开发缓存框架的选择与比较
    PHP开发缓存框架的选择与比较在进行PHP开发过程中,优化网站性能是一个非常重要的方面。其中,缓存技术是提升网站性能的一种常用方法。而为了更加高效地利用缓存,开发缓存框架成为开发人员的首选。本文将介绍一些流行的PHP缓存框架,并对它们进行比...
    99+
    2023-11-07
    开发 PHP 关键词: 缓存框架
  • ASP 框架对象和 Django:如何在两个框架之间进行比较?
    ASP框架对象和Django:如何在两个框架之间进行比较? 在现代Web开发中,框架是必不可少的工具。ASP框架和Django是两个非常流行的框架,它们都提供了强大的工具来简化Web开发。但是,它们之间的差异是什么?本文将介绍ASP框架对象...
    99+
    2023-11-11
    框架 对象 django
  • Java和Django的响应式框架:优缺点比较
    Java和Django是两个备受欢迎的Web开发框架,它们各自拥有自己的特点和优势。在响应式框架方面,Java和Django也有各自的实现。在本文中,我们将比较Java和Django的响应式框架,探讨它们的优缺点。 Java的响应式框架:S...
    99+
    2023-09-07
    django 响应 框架
  • Go 框架与 NumPy:两种存储方式的比较?
    在计算机科学领域,存储是一个非常重要的话题。不同的存储方式可以对程序的性能和可维护性产生显著影响。本文将比较 Go 框架和 NumPy 两种存储方式的优缺点,以及它们在不同情况下的适用性。 Go 框架是一种用于构建高性能网络应用程序的框架...
    99+
    2023-08-14
    框架 numpy 存储
  • 2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较
    文章目录 React:构建用户界面的首选Vue:简单优雅的前端框架Angular:Google支持的全面框架Node.js:服务器端的JavaScript运行环境比较不同框架的优势与劣势Rea...
    99+
    2023-09-26
    javascript react.js vue.js web3 java
  • 同步操作:Go、Laravel和Spring框架的比较分析。
    同步操作:Go、Laravel和Spring框架的比较分析 在软件开发中,同步操作是不可避免的。同步操作是指多个线程或进程访问共享资源时的相互协调。在本文中,我们将比较分析三个流行的框架:Go、Laravel和Spring,它们的同步操作实...
    99+
    2023-07-09
    laravel spring 同步
  • 同步操作:Go、Laravel和Spring框架的优缺点比较。
    同步操作:Go、Laravel和Spring框架的优缺点比较 随着互联网的发展,Web开发成为了一个热门领域,越来越多的开发者开始使用不同的编程语言和框架进行开发。在Web开发中,同步操作是一个非常重要的话题,因为在处理请求和响应时需要使用...
    99+
    2023-07-09
    laravel spring 同步
  • Java分布式框架比较:哪个更适合你的项目?
    随着互联网的发展,分布式架构已经成为了大势所趋。在这种情况下,各种各样的分布式框架应运而生,Java作为一种广泛应用于企业级应用的编程语言,也有许多分布式框架供开发者选择。在本文中,我们将比较一些主流的Java分布式框架,并尝试找出哪个更...
    99+
    2023-09-30
    分布式 windows 框架
  • Python 日志框架和 Spring 的比较,哪个更容易上手?
    Python 和 Java 是两种非常流行的编程语言,它们都有自己的日志框架。Python 的日志框架是 logging,而 Java 的 Spring 框架则有自己的日志模块。在本文中,我们将比较这两个日志框架,并探讨哪一个更容易上手。...
    99+
    2023-06-25
    日志 框架 spring
  • PHP和Unix的框架与Spring的性能比较:哪一个更胜一筹?
    随着互联网技术的飞速发展,开发人员对于高性能框架的需求也越来越大。PHP和Unix的框架以及Spring是目前比较流行的高性能框架,那么在PHP和Unix的框架与Spring之间,哪一个更胜一筹呢?本文将从性能、易用性和可扩展性三个方面进...
    99+
    2023-09-04
    unix 框架 spring
  • Laravel和ASP:两种编程框架下的自然语言处理算法比较
    自然语言处理(NLP)是一种人工智能技术,它使计算机能够理解和处理人类语言。在开发NLP应用程序时,选择正确的编程框架可以使开发人员更加高效和易于管理。在本文中,我们将比较Laravel和ASP两种编程框架下的自然语言处理算法。 Larav...
    99+
    2023-10-19
    laravel 编程算法 自然语言处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作