Junit

前言

  • JUnit 是一个 Java 编程语言的单元测试框架。

  • JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。

  • Junit 官网

  • Junit 教程

  • Junit 快速入门

1、Junit

  • JUnit 促进了 “先测试后编码” 的理念,强调建立测试数据的一段代码,可以先测试,然后再应用。

  • 这个方法就好比 “测试一点,编码一点,测试一点,编码一点……”,增加了程序员的产量和程序的稳定性,可以减少程序员的压力和花费在排错上的时间。

  • 特点

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

2、入门

  • 大家刚开始写代码的时候,都会用 main 函数来进行运行。顺便测试一下所写的代码,是否按照期望运行。

  • 通过 main 方法来进行测试的问题是显而易见的。

  • 但是要在原来测试的基础上修改,可能破坏原来的测试逻辑。

  • 测试成功了,还是测试失败了,只能通过肉眼进行观察,如果测试的量很大,是很难看的过来的。

  • 为了应付这种测试的需求,我们就需要使用 junit 测试框架来进行测试工作。

  • 示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import org.junit.Test;
    import junit.framework.Assert;

    public class TestCase1 {

    @Test
    public void testSum1() {
    int result = SumUtil.sum1(1, 2);
    Assert.assertEquals(result, 3); // 对 result 数值的期待是 3,如果是其他数值,就无法通过测试
    }
    }
  • Junit 的好处

    • 新增加的测试,对原来的测试没有影响。
    • 如果测试失败了,会立即得到通知。
  • 注解

关键字 介绍
@Test 表示这个方法是一个测试方法
@Before 测试开始之前做的事情,比如链接数据库等等
@After 测试结束之后做的事情,比如关闭链接等等
  • Assert

    • 除了举例里的判断数字是否相等,还可以判断 boolean, 是否是 null,是否是相同对象等等常见逻辑。

3、TestSuite

  • TestSuite 其实就是一下执行多个测试类。

    1
    2
    3
    4
    5
    6
    7
    8
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;

    @RunWith(Suite.class)
    @Suite.SuiteClasses({TestCase1.class, TestCase2.class}) // 一下运行 TestCase1 和 TestCase2
    public class TestSuite {

    }
  • TestCase1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import org.junit.Test;
    import junit.framework.Assert;

    public class TestCase1 {

    @Test
    public void testSum1() {
    int result = SumUtil.sum1(1, 2);
    Assert.assertEquals(result, 3);
    }
    }
  • TestCase2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;

    import junit.framework.Assert;

    public class TestCase2 {

    @Before
    public void before() {
    System.out.println("测试前的准备工作,比如链接数据库等等");
    }

    @After
    public void after() {
    System.out.println("测试结束后的工作,比如关闭链接等等");
    }

    @Test
    public void testSum1() {
    int result = SumUtil.sum1(1, 2);
    Assert.assertEquals(result, 3);
    }

    @Test
    public void testSum2() {
    int result = SumUtil.sum2(1, 2, 3);
    Assert.assertEquals(result, 5);
    }
    }

4、Maven 里使用

  • Maven 里的使用。关键就是 pom.xml 了,加上 Junit 的就好了。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <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.0</modelVersion>
    <groupId>com.qianchia</groupId>

    <artifactId>junit</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>junit</name>
    <description>junit</description>

    <dependencies>

    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.3.1</version>
    <scope>test</scope>
    </dependency>

    </dependencies>

    </project>

5、Spring 下的测试

6、Spring Boot 下的测试

文章目录
  1. 1. 前言
  2. 2. 1、Junit
  3. 3. 2、入门
  4. 4. 3、TestSuite
  5. 5. 4、Maven 里使用
  6. 6. 5、Spring 下的测试
  7. 7. 6、Spring Boot 下的测试
隐藏目录