JUnit单元测试(1)

文章目录

  • 单元测试
  • 为什么需要单元测试
  • JUnit
  • 实践


单元测试

  • 单元测试是针对最小功能单元编写的测试代码
  • Java程序最小的功能单元是方法
  • 单元测试就是针对单个Java方法的测试

为什么需要单元测试

首先了解一下测试驱动开发:测试驱动开发(Test Driven Development)简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。
JUnit单元测试(1)_第1张图片

传统测试:
假如我们现在需要测试一个计算类Calculate,那么就需要写一个这样的测试代码。

Calculate

public class Calculate {
    public int plus(int a, int b){
        return a+b;
    }
}

CalculateTest

public class CalculateTest {
    public static void main(String[] args) {
        Calculate calculate = new Calculate();
        if(calculate.plus(1,2)==3){
            System.out.println("success");
        }else {
            System.out.println("error");
        }
    }
}

运行结果:success
虽然可以测试出结果,但是不难看出,当类方法多的时候,编写测试类的就会很麻烦,工作量很大,并且要测试多个类的时候,由于只有一个main方法,此时测试类的逻辑就会很混乱,在开发时不能专注于测试的编写。单元测试应运而生。其中运用最广泛的就是JUnit。

单元测试的优势:

  • 确保单个方法运行正常
  • 如果修改了方法代码,只需要确保对应的单元测试通过
  • 测试代码本身就是示例代码
  • 可以自动化运行所有测试并获得报告

JUnit

JUnit是一个开源的Java语言的单元测试框架

特点:

  1. 可以使用断言测试期望结果
  2. 方便组织和运行测试
  3. 方便查看结果
  4. 可以集成到IDE或Maven

组成

项目 解释
TestCase 表示一个测试
TestSuite 表示一组测试,包含一组TestCase
TestFixture 表示测试环境
TestResult 测试结果
TestRunner 运行测试
TestListener 监听测试过程,收集数据
Assert 断言,用于判断结果是否正确

实践

JUnit单元测试(1)_第2张图片
一般来说,建立两个文件夹,一个为main文件夹,一个是test文件夹,main文件夹中用来写业务代码,test中写测试代码,建立好两个文件夹后,默认是普通文件夹,此时需要右键文件夹将他修改为源码或是测试文件夹
JUnit单元测试(1)_第3张图片
之后可以使用jar包导入Junit或者在项目文件夹中添加pom.xml文件使用maven导入


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>JUnit_testgroupId>
    <artifactId>JUnit_testartifactId>
    <version>1.0-SNAPSHOTversion>
    <dependencies>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
            <scope>testscope>
        dependency>
    dependencies>
project>

将之前的测试类改写

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class CalculateTest {

    @Test
    public void testPlus(){
        assertEquals(3,new Calculate().plus(1,2));
        assertEquals(4,new Calculate().plus(1,2));
    }
}

我们写了一组正确的断言和错误的断言,运行结果如下:
JUnit单元测试(1)_第4张图片
常见断言:
JUnit单元测试(1)_第5张图片

你可能感兴趣的:(java开发)