SpringBoot 整合 Junit

简介: JUnit是一个Java语言的单元测试框架。SpringBoot整合Junit,Spring整合Junit。

前言

Java语言的单元测试框架  

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。

JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。


1、Junit简介

1)Junit是什么

  JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

1)单元测试

  单元测试(英语:Unit Testing)又称为模块测试 ,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。

  单元测试允许程序员在未来重构代码,并且确保模块依然工作正确(复合测试)。这个过程就是为所有函数和方法编写单元测试,一旦变更导致错误发生,借助于单元测试可以快速定位并修复错误。  单元测试可以由两种方式完成:

手工测试 自动化测试
定义 手动执行测试用例并不借助任何工具的测试被称为人工测试。 借助工具支持并且利用自动工具执行用例被称为自动测试。
效率 消耗时间并单调:由于测试用例是由人力资源执行,所以非常缓慢并乏味。 快速自动化运行测试用例时明显比人力资源快。
人力资源要求 人力资源上投资巨大:由于测试用例需要人工执行,所以在人工测试上需要更多的试验员。 人力资源投资较少:测试用例由自动工具执行,所以在自动测试中需要较少的试验员。
可信度 可信度较低:人工测试可信度较低是可能由于人工错误导致测试运行时不够精确。 可信度更高:自动化测试每次运行时精确地执行相同的操作。
程式化 非程式化:编写复杂并可以获取隐藏的信息的测试的话,这样的程序无法编写。 程式化:试验员可以编写复杂的测试来显示隐藏信息。

2)Junit特点

特点:

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

2、Spring整合Junit

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=SpringConfig.class)
publicclassUserServiceTest {
@AutowiredprivateTestServicetestService;
@TestpublicvoidtestSave(){
TestService.save();
    }
}

使用 @RunWith 注解指定运行器,使用 @ContextConfiguration 注解来指定配置类或者配置文件。

3、SpringBoot整合Junit

1)准备环境

1)创建一个名为Junit的 SpringBoot 工程,工程目录结构如下

image.png

2)添加Junit依赖

     

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>

3)代码测试用例在 com.example.junit.service下创建 TestService`接口,内容如下

packagecom.example.junit.services;
publicinterfaceTestService {
publicvoidsave();
}

在com.example.junit.services.impl包写创建一个TestServiceImpl类,使其实现 TestService 接口,内容如下

packagecom.example.junit.services.impl;
importcom.example.junit.services.TestService;
importorg.springframework.stereotype.Service;
@ServicepublicclassTestServiceImplimplementsTestService {
@Overridepublicvoidsave() {
System.out.println("save method");
    }
}

2)编写测试类

创建测试类,将TestService`注入到该测试类中

package com.example.junit;

import com.example.junit.services.TestService;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest

class JunitApplicationTests {

   @Autowired

   private TestService testService;

   @Test

   void Test() {

       testService.save();

   }

}

测试结果

image.png

4、SpringBoot的优势

SpringBoot 整合 junit 特别简单,分为以下三步完成

  • 在测试类上添加 SpringBootTest 注解
  • 使用 @Autowired 注入要测试的资源
  • 定义测试方法进行测试

总结

  单元测试允许程序员在未来重构代码,并且确保模块依然工作正确(复合测试)。这个过程就是为所有函数和方法编写单元测试,一旦变更导致错误发生,借助于单元测试可以快速定位并修复错误。

相关文章
|
4月前
|
Java 测试技术 Spring
Spring Boot 基于 JUnit 5 实现单元测试
Spring Boot 基于 JUnit 5 实现单元测试
141 0
|
4月前
|
druid Java 关系型数据库
SpringBoot整合junit、整合Mybatis及使用Druid数据源
SpringBoot整合junit、整合Mybatis及使用Druid数据源
66 0
|
3月前
|
Java 测试技术 持续交付
Springboot中JUNIT5单元测试+Mockito详解
Springboot中JUNIT5单元测试+Mockito详解
366 1
|
3月前
|
Java 测试技术
|
3月前
|
监控 druid Java
Springboot用JUnit测试接口时报错Failed to determine a suitable driver class configure a DataSource: ‘url‘
Springboot用JUnit测试接口时报错Failed to determine a suitable driver class configure a DataSource: ‘url‘
73 0
|
4月前
|
Java 关系型数据库 MySQL
SpringBoot整合JUnit、MyBatis、SSM
SpringBoot整合JUnit、MyBatis、SSM
36 4
|
4月前
|
Java 测试技术
SpringBoot整合Junit进行单元测试
SpringBoot整合Junit进行单元测试
59 0
|
4月前
|
JSON Java 测试技术
SpringBoot 整合 JUnit5
Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。 JUnit Jupiter: JUnit Jupiter提供了JUnit5的新的编程模型,是JUnit5新特性的核心。
|
11月前
|
Java 测试技术 C++
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
114 0
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
|
10月前
|
Java 测试技术
Springboot集成JUnit5优雅进行单元测试
Springboot集成JUnit5优雅进行单元测试
123 0