阅读更多

0顶
1踩

互联网

原创新闻 更好的单元测试

2016-08-10 16:23 by 副主编 mengyidan1988 评论(0) 有6338人浏览
引用

原文:Better Unit Tests
作者:Manu Pk 翻译:赖信涛 责编:仲培艺

在过去的几年间,我们向我们的产品中加入了很多单元测试,提高内部质量。在此期间,我们经常遇到选择单元测试还是一体化测试的困难。我想介绍一些我们用以优化现有系统的方法。

单元测试的核心是,隔离组件的依赖,每次测试一个单独的组件。经典的单元测试有这些原则:“快速,独立,可重复,自我验证,及时。”在Java中,一个方法就是一个单元。所以,传统的(也是最常用的)单元测试是将类的每个方法和他们的依赖分来,分别测试。

有趣的是,一个单元是什么,并没有明确的定义。很多时候,跨多个类的多个方法的组合可能有相同的行为。所以,在这种情况下,这种行为可以视作一个单元。我见过很多人打破单元,去单独测试每一个方法。如果中间结果对我们来说没有意义,这样做只会让系统更加复杂。最好的方法是和他们的依赖一起测试。所以,我们要结合它们的实现来测试,而不只是模仿。Bob大叔在这篇文章中说:“模仿要突破边界。”

如果软件是用TDD方法开发的,那么脱离依赖,或者向下一个特性添加测试就不是一个难题了。但是,不是所有的软件都用这种方法。更不幸的是,有一些系统只写了很少的测试,甚至没有写测试。这种情况下,我们就可以在不同的层级使用这些测试的原则。Terry Yin在他的演讲“测试的错误概念”中给了我们下面这张图,展示了不同测试的优点和缺点。



很多项目都用了Java和Spring框架。我们使用了Spring的@RunWith和SpringJUnit4ClassRunner,可以创建带有依赖的对象。如果有需要,你可以有选择地模拟依赖。使用这个平台,可以轻松地写出带有依赖的测试对象。我们称它为app层测试。这也是一种没有外部依赖的快速运行测试。我们也有可以连接外部系统的一体化测试。现在,我的默认测试选择都是app层测试,只有在写逻辑很复杂的代码时,才会使用单元测试。

有关测试方面的内容,大家可以访问CSDN知识库——软件测试,里面有非常全面的资源和学习资料。

软件测试知识库图谱

  • 大小: 22.9 KB
  • 大小: 54.4 KB
0
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 教你如何更好的编写JAVA单元测试

    如何更好的编写JAVA单元测试 如各位希望转载或引用,请注明出处,尊重原创,谢谢。如有疑问或错误,欢迎邮件沟通。 gitHub地址:https://github.com/thinkingfioa 邮箱地址:thinking_fioa@163.com 博客地址: ...

  • 单元测试方法介绍

    单元测试就是一个软件中最小单元的测试,通常都是一个类或者方法 ①软件的质量不是功能完整以及功能实现没有问题,而是实现功能的逻辑代码是否正确、是否健壮 ②从测试环节的越晚发现问题,解决问题的成本就越高这个...

  • 单元测试详解

    维基百科中是这样描述的:在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向...

  • Java基础单元测试

    本篇博文主要讲解Java基础内容单元测试和Junit5的使用。

  • 该怎么写单元测试呢

    然后掌握mock的技巧,写新方法的时候,尝试设计完接口后,先写下单测,慢慢的你...好吧,这里需要强调一下,逻辑简单的类,其实没必要写单测,一般只是领导要求纯粹的追求覆盖率的时候,才会把这种简单的类补上去。...

  • 如何写单元测试

    单元测试

  • SpringBoot 之 单元测试

    SpringBoot之单元测试

  • 单元测试与集成测试

    按测试策略和过程,软件测试分为单元测试、集成测试、确认测试和系统测试。 按软件系统工程,测试是软件质量保证的最后的一关。 高质量的程序取决于以下几个方面: 高质量的设计 规范的编码 有效的测试 开发部...

  • 移动端单元测试

    **如果某个模块或者函数满足预期,则表示测试通过,否则表示失败,比如工厂在组装一台电视机之前,会对每个元件都进行测试看是否合格,这就是单元测试,是不是很好理解。 为什么编写单元测试 单元测试是软件工程中...

  • 测试用例-单元测试

    单元测试——编写手册 1.简述 本文主要针对如何使用Junit编写单元测试进行描述 文中的实例基于Junit 4 所谓单元测试,即是指针对程序中的一些单元进行测试的方法 这些单元在Junit中的最小单位为方法 借助单元测试,...

  • 如何做单元测试

    如何做好单元测试一. 定义二. 为什么要做单元测试三. 单元测试用例四. 阿里单元测试规约五. 测试框架的使用Junit(下面以Junit4 为例来介绍)1.1、什么是Junit1.2、为何使用Junit1.3、Junit的快速入门导入Junit对应...

  • 浅谈c++单元测试

    什么是单元测试? 单元测试是指,对软件中的最小可测试单元在...单元测试并不会花费更多的时间,与之相反,在提高代码效率、减少bug数量、有序开展开发工作上,单元测试发挥着很大的作用。...........................

  • 单元测试 - C/C++

    什么是单元测试 单元测试是软件开发过程中的一种质量保证手段。最初的来源是想模仿对硬件芯片做单元测试那样,在软件中也能对小的软件单元进行测试,从而保证软件中某个局部设计的正确性。 传统的单元测试定义 ...

  • iOS单元测试

    是对最小单元(方法、函数)的验证性测试。一般来说,单元测试不需要依赖外部环境、网络环境、数据库环境。

  • Java单元测试总结

    文章目录概述单元测试概念测试项目单元测试工具JUnitMockitoSpringBoot测试总结 概述 关于为什么要做单元测试是老生常谈了,越是小公司越不重视单元测试,这是实践出来的最经济的做法。由于大部分人在小公司工作,...

  • 单元测试之mock使用

    单元测试之mock使用

  • 详述-单元测试

    测试有黑盒测试和白盒测试之分,黑盒测试顾名思义就是我们不了解盒子的内部结构,我们通过文档或者对该功能的理解,指定了相应的输入参数,然后判断得出的结果是否正确。普通的用户、开发、QA都可以进行黑盒测试。 ...

  • Java单元测试

    Java之单元测试

  • 【嵌入式单元测试】C语言单元测试框架搭建

    嵌入式单元测试框架搭建

  • QTest 单元测试框架及单元测试思考

    qt 单元测试框架 QTEST 及思考

Global site tag (gtag.js) - Google Analytics