IDEA下的JUnit4单元测试

什么是 JUnit?

JUnit 是一个 Java 编程语言的单元测试框架。JUnit 促进了“先测试后编码”的理念,强调建立测试数据的一段代码,可以先测试,然后再应用。这个方法就好比“测试一点,编码一点,测试一点,编码一点……”,增加了程序员的产量和程序的稳定性,可以减少程序员的压力和花费在排错上的时间。

特点:

JUnit 是一个开放的资源框架,用于编写和运行测试。
提供注释来识别测试方法。
提供断言来测试预期结果。
提供测试运行来运行测试。
JUnit 测试允许你编写代码更快,并能提高质量。
JUnit 优雅简洁。没那么复杂,花费时间较少。
JUnit 测试可以自动运行并且检查自身结果并提供即时反馈。所以也没有必要人工梳理测试结果的报告。
JUnit 测试可以被组织为测试套件,包含测试用例,甚至其他的测试套件。
JUnit 在一个条中显示进度。如果运行良好则是绿色;如果运行失败,则变成红色。

什么是一个单元测试用例?

单元测试用例是一部分代码,可以确保另一端代码(方法)按预期工作。为了迅速达到预期的结果,就需要测试框架。JUnit 是 java 编程语言理想的单元测试框架。
一个正式的编写好的单元测试用例的特点是:已知输入和预期输出,即在测试执行前就已知。已知输入需要测试的先决条件,预期输出需要测试后置条件。

JUnit的使用

Helloworld工程

  • 创建一个maven工程,并添加依赖;

      junit
      junit
      4.12
      test
    
  • 创建计算类Calculator,待测试;
public class Calculator {
    public int evaluate(String expression) {
        int sum = 0;
        for (String summand: expression.split("\\+"))
            sum += Integer.valueOf(summand);
        return sum;
    }
}
  • 创建计算类Calculator的相应测试类CalculatorTest,用@Test标注测试方法;
import org.junit.Test;
import static junit.framework.TestCase.assertEquals;
/**
 * Created by maple on 2018-07-01.
 */
public class CalculatorTest {

    @Test
    public void evaluatesExpression() {
        Calculator calculator = new Calculator();
        int sum = calculator.evaluate("1+2+3");
        assertEquals(6, sum);
    }
}
  • 运行测试类的测试方法,方式如下图:

点击运行,测试通过如下图:

  • 运行测试类所有的测试方法,方式如下图:

使用断言

该断言方法具有重载特性,具有多种类型的断言判断。

两个断言类,提供方法有一定差异,可根据实际情况进行选择;

import static junit.framework.TestCase.assertEquals;
import static org.junit.Assert.*;

执行过程控制

四个注解@Before、@BeforeClass、@After、@AfterClass,具体说明见注解。

package com.lczyfz.junit;

import org.junit.*;
import static junit.framework.TestCase.assertEquals;

/**
 * Created by maple on 2018-07-01.
 */
public class CalculatorTest {

    //每次测试方法执行前,该方法执行一次
    @Before
    public void before(){
        System.out.println("do before");
    }
    //仅执行一次,在测试一开始执行
    @BeforeClass
    public static void beforeClass(){
        System.out.println("do beforeClass");
    }
    @Test
    public void evaluatesExpression() {
        System.out.println("do evaluatesExpression");

        Calculator calculator = new Calculator();
        int sum = calculator.evaluate("1+2+3");
        assertEquals(6, sum);
    }

    @Test
    public void evaluatesExpressionOther() {
        System.out.println("do evaluatesExpressionOther");

        Calculator calculator = new Calculator();
        int sum = calculator.evaluate("1+2+3+4");
        assertEquals(10, sum);
    }

    //每次测试方法执行结束时,该方法执行一次
    @After
    public void after(){
        System.out.println("do after");
    }
    //仅执行一次,在测试结束执行
    @AfterClass
    public static void afterClass(){
        System.out.println("do afterClass");
    }
}

你可能感兴趣的:(IDEA下的JUnit4单元测试)