lsekfe 发表于 2022-11-10 13:36:17

JUnit单元测试入门分享

JUnit
  JUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛。
  JUnit 注解

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

通常我用的最多的还是assertEquals( )方法。
  Junit 测试用例
  下面就做一个最简单的示例,简单展示用法:
<font size="3">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;
      }
  }</font>这是一个Calculator类,里面有add( )和sub( )两个方法,分别代表加和减操作。
  为了测试这两个方法,我们创建一个CalculatorTest类。
<font size="3"> 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()");
      }
  }</font>
测试结果如下:

左侧结果显示testSub()方法没有通过,从右边的结果可以看到,testSub()预期的结果是 1,而实际的结果为-1。而且从输出的内容来看,当断言检查的结果不通过时,后面的语句并不会被执行。
  CalculatorTest类加上@BeforeEach注解和@AfterEach注解:
  新增代码如下:
<font size="3">    /**
     * 初始化方法
     * 在所有方法执行前执行这个方法
     */
      @BeforeEach
      public void init() {
        System.out.println("开始执行");
      }
      /**
     *每个测试方法运行后,运行close()方法
     */
      @AfterEach
      public void close() {
        System.out.println("结束执行");
      }</font>
结果如下:

可以看到,先输出了开始执行,再输出testAdd(),最后输出结束执行。这样当我们需要处理一些公共的事务时,就可以采用@BeforeEach注解和@AfterEach注解。
  小结
  1、定义一个测试用例,测试类名为被测试类名+Test。
  2、定义测试方法:可以独立运行。
  ·方法名:test+测试的方法名。
  · 返回值:void。
  · 参数列表:空参。
  3、给方法加@Test注解,用来识别为测试方法。
  4、存在预处理和收尾的处理时,可以使用@BeforeEach和@AfterEach注解,当然也可以用@BeforeAll和@AfterAll注解。
  5、关于JUnit还有很多高级的测试内容,比如参数测试、套件测试等,但是目前我用的就只是这些简单的,所以以后有机会再总结一下。







页: [1]
查看完整版本: JUnit单元测试入门分享