JAVA核心技术:JUnit

文章目录

  • 知识点
    • 软件测试
      • 单元和集成测试
      • 白盒和黑盒测试
      • 自动和手动测试
      • 回归测试
      • 测试策略
    • JUnit
      • 简介
      • 问题分析和测试用例
        • pom文件
        • 三角形边长代码
        • 三角形边长测试类代码
        • 断言方法
        • JUnit执行结果
        • Maven执行结果
  • 练习

知识点

软件测试

  • 软件测试的经典定义是:

规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

  • 软件测试分类
    • 单元 vs 集成测试
    • 白盒 vs 黑盒测试
    • 自动 vs 手动测试
    • 回归测试
    • 压力测试
    • 。。。。。

单元和集成测试

  • 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。通常是一个函数/方法。
  • 单元测试是已知代码结构进行的测试,属于白盒测试。
  • 集成测试是将多个单元相互作用,形成一个整体,对整体协调性进行测试。
  • 一般从构成系统的最小单元开始,持续推进到单元之间的接口直到集成为一个完成的软件系统为止。

白盒和黑盒测试

  • 白盒测试 (white-box testing),全面了解程序内部逻辑结构,对所有的逻辑路径都进行测试。一般由程序员完成。
  • 黑盒测试 (black-box testing),又名功能测试,将程序视为一个不能打开的黑盒子。在完全不考虑程序内部结构和内部特性的情况下,检查程序功能是否按照需求规格说明书的规定正常使用。一般由独立的使用者完成。

自动和手动测试

  • 自动测试 :用测试程序批量、反复测试功能程序,并可自动检查功能程序输出结果是否满足预定的要求。
  • 手动测试:手动执行程序,手动输入所需要的参数,手动检查程序结果是否满足预定的要求。

回归测试

  • 回归测试 :修改旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误
  • 回归测试在整个软件测试过程中占有很大的比重。软件快速迭代开发过程中,新版本的连续发布(Daily/Nightly Build)使得回归测试进行的更加频繁。

测试策略

  • 基于main函数的策略
    • 优点:简单
    • 缺点:
      • 无法自动判断被测对象的行为是否符合预期
      • main方法需要添加大量的代码,这些代码在发布时候也需要手动删除
      • 分散程序员在开发时的关注点
  • 基于自动化测试框架的策略
    • 初始化 Rightarrow /span>输入测试数据执行被测代码 Rightarrow /span>获取系统实际结果 Rightarrow /span>比较结果是否一致 Rightarrow /span>输出测试结论

JUnit

简介

JUnit:一个Java语言的单元测试框架

  • Kent Beck (极限编程) 和 Erich Gamma (设计模式)建立的
  • 是xUnit家族中最成功的一个
  • 大部分的Java IDE都集成了JUnit作为单元测试工具
  • 官网: https://junit.org
  • 版本
    • 5 :最后稳定版5.3.2, 2018.11发布
    • 4 :最后稳定版4.12, 2014.12发布
    • 3 :最后稳定版3.8.2, 2007.5发布

问题分析和测试用例

给定三个整数,判断以此为边长能否构成三角形

  • 三个整数都要大于0 (-1, 2, 3) (3, 2, 0)
  • 任意两边之和大于第三边 (1,2,3) (2, 3, 6)
    • a+b>c
    • b+c>a
    • c+a>b
      JAVA核心技术:JUnit

      三角形边长代码

      三角形边长测试类代码

      • 每一个测试方法的头部加 @Test (注解),这样JUnit会自动执行这些测试方法。
      • import static:导入某一个类的所有静态方法。
      • a s s e r t E q u a l s assertEquals assertEquals:最常用的断言方法,在类中定义。判定第二个参数的函数输出是否符合第一个参数的预期值,不符合则报异常。

      断言方法

      • assertEquals(expected, actual):查看两个对象是否相等。类似于字符串比较使用的equals()方法;
      • assertNotEquals(first, second):查看两个对象是否不相等。
      • assertNull(object):查看对象是否为空。
      • assertNotNull(object):查看对象是否不为空
      • assertSame(expected, actual):查看两个对象的引用是否相等,类似于使用“==”比较两个对象;
      • assertNotSame(unexpected, actual):查看两个对象的引用是否不相等,类似于使用“!=”比较两个对象。
      • assertTrue(String message, boolean condition) 要求condition == true,查看运行的结果是否为true;
      • assertFalse(String message, boolean condition) 要求condition == false,查看运行的结果是否为false。
      • assertArrayEquals(String message, XXX[] expecteds,XXX [] actuals) 要求expected.equalsArray(actual),即查看两个数组是否相等。
      • assertThat(String reason, T actual, Matcher matcher) :要求matcher.matches(actual) == true,使用Matcher做自定义的校验。

      JUnit执行结果

      • 执行方法
        右键测试类 Rightarrow /span>run as Rightarrow /span>Maven Test
        JAVA核心技术:JUnit
        • 错误范例

        JAVA核心技术:JUnit
      • 正确范例

      JAVA核心技术:JUnit
      • 错误范例

        来源:陰丹士林藍

        声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月1日
下一篇 2020年10月1日

相关推荐