JUnit单元测试入门小结

发表于:2022-11-10 09:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黑里俏    来源:稀土掘金

  JUnit
  JUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛。
  JUnit 注解
  以上就是最常用的五种注解了。
  JUnit 断言
  使用JUnit进行单元测试,我们可以使用断言(Assertion)来测试期望结果,可以方便地组织和运行测试,并方便地查看测试结果。
  Junit所有的断言都包含在 Assert 类中。
  这个类提供了很多有用的断言方法来编写测试用例。只有失败的断言才会被记录。Assert 类中的一些有用的方法列式如下:

  通常我用的最多的还是assertEquals( )方法。
  Junit 测试用例
  下面就做一个最简单的示例,简单展示用法:
  package cn.hust.enhance;
  public class Calculator {
      int age;
      /**
       * 加法
       * @param a
       * @param b
       * @return
       */
      public int add(int a,int b){ return a+b; }
      /**
       * 减法
       * @param a
       * @param b
       * @return
       */
      public int sub(int a,int b){
          return a-b;
      }
  }
  这是一个Calculator类,里面有add( )和sub( )两个方法,分别代表加和减操作。
  为了测试这两个方法,我们创建一个CalculatorTest类。
  package cn.hust.test;
  import cn.hust.enhance.Calculator;
  import org.junit.jupiter.api.*;
  import static org.junit.jupiter.api.Assertions.assertEquals;
  public class CalculatorTest {
      /**
       * 测试add方法
       */
      @Test
      public void testAdd() {
          Calculator calculator=new Calculator();
          int result = calculator.add(1, 2);
          //断言的第一个参数表示预期的值,第二个参数表示运算的结果
          //这里的的计算结果与预期结果是一致的,所以测试通过
          assertEquals(3, result);
          System.out.println("testAdd()");
      }
      /**
       * 测试sub方法
       */
      @Test
      public void testSub() {
          Calculator calculator=new Calculator();
          int result = calculator.sub(1, 2);
           //断言的第一个参数表示预期的值,第二个参数表示运算的结果
          //这里的的计算结果与预期结果是不一致的,所以测试没通过
          assertEquals(1, result);
          System.out.println("testSub()");
      }
  }
  测试结果如下:
  左侧结果显示testSub()方法没有通过,从右边的结果可以看到,testSub()预期的结果是 1,而实际的结果为-1。而且从输出的内容来看,当断言检查的结果不通过时,后面的语句并不会被执行。
  CalculatorTest类加上@BeforeEach注解和@AfterEach注解:
  新增代码如下:
      /**
       * 初始化方法
       * 在所有方法执行前执行这个方法
       */
      @BeforeEach
      public void init() {
          System.out.println("开始执行");
      }
      /**
       *每个测试方法运行后,运行close()方法
       */
      @AfterEach
      public void close() {
          System.out.println("结束执行");
      }
  结果如下:
  可以看到,先输出了开始执行,再输出testAdd(),最后输出结束执行。这样当我们需要处理一些公共的事务时,就可以采用@BeforeEach注解和@AfterEach注解。
  小结
  1、定义一个测试用例,测试类名为被测试类名+Test。
  2、定义测试方法:可以独立运行。
  ·方法名:test+测试的方法名。
  · 返回值:void。
  · 参数列表:空参。
  3、给方法加@Test注解,用来识别为测试方法。
  4、存在预处理和收尾的处理时,可以使用@BeforeEach和@AfterEach注解,当然也可以用@BeforeAll和@AfterAll注解。
  5、关于JUnit还有很多高级的测试内容,比如参数测试、套件测试等,但是目前我用的就只是这些简单的,所以以后有机会再总结一下。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号