快速上手Java单元测试框架JUnit5

为什么学JUnit5

Java技术栈的单元测试框架有两个:JUnit和TestNG,有种说法是TestNG比JUnit更强大,学TestNG就够了,但是当我打开GitHub看到star的时候,犹豫了:

JUnit

TestNG

相差了足足有3K之多。带着这个困惑,我在网上查阅了一番资料,原来JUnit5相较于JUnit4有了重大升级,已经包含了TestNG的所有功能。为了坚定我学JUnit的想法,我咨询了身边做Java开发的朋友,开发写UT都是用的JUnit。这两个理由足以让我开始对JUnit5的学习。

JUnit5是什么

跟之前的JUnit有所不同,JUnit5由三个子项目的模块组成:

JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

  • JUnit Platform 在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。提供了从命令行启动平台的Console Launcher,和支持JUnit4环境的JUnit4 based Runner。IDE一般都集成了JUnit Platform,比如IntelliJ IDEA。
  • JUnit Jupiter JUnit5新特性,结合了新的programming model和extension model,以便于在JUnit5中编写测试和扩展。提供了在平台上运行基于Jupiter测试的TestEngine。
  • JUnit Vintage 提供了在平台上运行基于JUnit3和JUnit4测试的TestEngine,照顾老的项目。

JUnit5新特性

使用JUnit Jupiter写测试

示例代码:

import static org.junit.jupiter.api.Assertions.assertEquals;

import example.util.Calculator;

import org.junit.jupiter.api.Test;

class MyFirstJUnitJupiterTests {

    private final Calculator calculator = new Calculator();

    @Test
    void addition() {
        assertEquals(2, calculator.add(1, 1));
    }

}

注意这个导包的路径org.junit.jupiter.api,Jupiter就是JUnit5的新特性。

兼容JUnit4和JUnit3

JUnit Vintage提供了在平台上运行基于JUnit3和JUnit4测试的TestEngine, 并且新的包org.junit.jupiter避免了和JUnit4的org.junit在classpath上有任何冲突。

多IDE运行

JUnit能在IntelliJ IDEA、Eclipse、NetBeans、Visual Studio Code等IDE中运行。

从JUnit Jupiter扩展Model

示例:

@ExtendWith(RandomParametersExtension.class)
@Test
void test(@Random int i) {
    // ...
}

给test方法注册了一个新的RandomParametersExtension。

更多高级用法

JUnit5提供了更多高级用法,比如JUnit Platform Launcher API和JUnit Platform Test Kit等,这些会在之后的文章逐一进行介绍。

小结

本文首先解释了为什么要学JUnit5,一是因为全新一代JUnit功能更加强大,二是Java开发写单元测试都是用的JUnit,然后介绍了JUnit5是什么以及它的新特性。学习JUnit,在单元测试这条路上,又往前迈了一步。

参考资料:

https://junit.org/junit5/docs/current/user-guide/

到此这篇关于快速上手Java单元测试框架JUnit5的文章就介绍到这了,更多相关Java单元测试框架JUnit5内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何在Maven项目中运行JUnit5测试用例实现

    本文演示了如何如何编写JUnit 5测试用例,在Maven项目中运行JUnit 5测试用例. 编写JUnit 5测试用例 如果你是Java开发者,那么对于JUnit应该就不陌生.JUnit是Java单元测试的基础工具. JUnit目前最新的版本是JUnit 5.x,但广大的Java开发者估计还停留在JUnit 4.x,因此有必要演示下如何编写JUnit 5测试用例. 引入JUnit 5依赖 相比较JUnit 4而言,JUnit 5一个比较大的改变是JUnit 5拥有与JUnit 4不同的全新的A

  • Springboot集成JUnit5优雅进行单元测试的示例

    为什么使用JUnit5 JUnit4被广泛使用,但是许多场景下使用起来语法较为繁琐,JUnit5中支持lambda表达式,语法简单且代码不冗余. JUnit5易扩展,包容性强,可以接入其他的测试引擎. 功能更强大提供了新的断言机制.参数化测试.重复性测试等新功能. ps:开发人员为什么还要测试,单测写这么规范有必要吗?其实单测是开发人员必备技能,只不过很多开发人员开发任务太重导致调试完就不管了,没有系统化得单元测试,单元测试在系统重构时能发挥巨大的作用,可以在重构后快速测试新的接口是否与重构前有

  • JUnit5相关内容简介

    著名的Java单元测试框架Junit 4已经出来很长时间了,当时我发现JUnit 5已经处于测试版,就准备写文章来介绍JUnit 5.不过因为还是测试版,所以有些地方还不太完善,我也有点懒没有好好写.这几天突然想起这事了,在到官网上查看,发现就在9月10日,JUnit 5的正式版终于出来了!那么我就正好把文章重新好好写写,为大家介绍这个最新的JUnit框架. 框架结构 和JUnit 4相比,JUnit 5的结构非常清晰,为自定义插件.IDE测试执行等扩展功能做了很好的支持.这一点从项目结构就可以

  • 详解IDEA JUnit5测试套件运行错误的问题

    1.问题 在Idea 2017.3中,建立JUnit5的测试用例Test Case,同时建立JUnit4的测试套件,运行测试套件时提示出错"java.lang.Exception: No runnable methods". 2.分析 Java进行单元测试时,一般会建立多个测试用例Test Case,或者多个测试类(每个测试类包括多个测试用例),但如果需要同时运行这些测试用例,一般在JUnit4中会采用测试套件,通过运行测试套件,在套件中一次运行多个测试用例类. 参考解答: 能够使用J

  • 快速上手Java单元测试框架JUnit5

    为什么学JUnit5 Java技术栈的单元测试框架有两个:JUnit和TestNG,有种说法是TestNG比JUnit更强大,学TestNG就够了,但是当我打开GitHub看到star的时候,犹豫了: JUnit TestNG 相差了足足有3K之多.带着这个困惑,我在网上查阅了一番资料,原来JUnit5相较于JUnit4有了重大升级,已经包含了TestNG的所有功能.为了坚定我学JUnit的想法,我咨询了身边做Java开发的朋友,开发写UT都是用的JUnit.这两个理由足以让我开始对JUnit5

  • Riot.js 快速的JavaScript单元测试框架

    http://github.com/alexyoung/riotjs示例: Ruby代码 复制代码 代码如下: context "a new user" do setup { User.new } asserts("that it is not yet created") { topic.new_record? } end context "a new user" do setup { User.new } asserts("that

  • 深入学习Java单元测试(Junit+Mock+代码覆盖率)

    前言 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 1.接口功能测试:用来保证接口功能的正确性. 2.局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 1.比如变量有无初始值 2.变量是否溢出 3.边界条件测试 1.变量没有赋值(即为NULL) 2.变量是数值(或字符) 1.主要边界

  • JavaWeb工程中集成YMP框架快速上手(二)

    本文将介绍如何在Java Web工程中集成YMP框架,操作过程基于IntelliJ IDEA做为开发环境,工程结构采用Maven构建: IntelliJ IDEA下载地址: https://www.jetbrains.com/idea/download/ Maven下载地址: http://maven.apache.org/ 创建项目 1. 打开IDEA开发环境并点击Create New Project按钮开始创建新项目向导,如下图-1所示: 2. 在New Project窗口中选中左侧Mave

  • 详解Java单元测试Junit框架实例

    问题: 1.目前测试存在的问题 2.Junit注意的细节 3.Junit使用规范 4.断言 5.案例 junit(单元测试框架) 1.目前存在的问题 1.目前的测试方法如果需要测试,都需要在main方法上调用 2.目前的结果都需要我们人工比对 2.Junit 注意的细节 1.如果使用junit测试一个方法的时候,在junit窗口上显示绿色那么表示测试正确,如果显示了红色,则代表该方法测试出现了异常不通过 2.如果点击方法名.类名.包名.工程名运行junit分别测试的是对于的方法,类.包中的所有类

  • React BootStrap用户体验框架快速上手

    官方文档http://react-bootstrap.github.io/getting-started.html 安装 在终端cd到你的项目目录下执行:$ npm install react-bootstrap 然后需要我们手动引用css <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstr

  • 微信小程序的mpvue框架快速上手指南

    一.什么是mpvue框架? mpvue 是一个使用 Vue.js 开发小程序的前端框架.框架基于 Vue.js 核心(所以建议熟练掌握vue再使用mpvue框架,否则还是建议去使用原生框架去写小程序),mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验. 二.必要的开发基础 ① 熟练掌握vue.js(未曾使用过vue这个框架的话,建议vue的官方文档进行学习:https://cn.vue

  • 快速入门HarmonyOS的Java UI框架的教程

    本文档适用于HarmonyOS应用开发的初学者.编写两个简单的页面,实现在第一个页面点击按钮跳转到第二个页面. 注意:运行Hello World在创建工程时,设备类型和模板分别以Wearable和Empty Feature Ability(Java)为例,本文档也基于相同的设备类型和模板进行说明. 编写第一个页面 在Java UI框架中,提供了两种编写布局的方式:在XML中声明UI布局和在代码中创建布局.这两种方式创建出的布局没有本质差别,为了熟悉两种方式,我们将通过XML的方式编写第一个页面,

  • 详解Java快速上手用户后台管理系统

    目录 主要功能 登录功能 管理员列表 用户列表 订单管理 主要功能 管理员登录功能.管理员列表操作.用户列表操作.订单管理 登录功能 设计思路:前端页面获取输入的数据,然后发送Ajax请求,在servlet中获取数据并调用service层中的方法进行处理,service层中调用dao层的实现方法,最终servlet返回一个结果集,判断登录是否成功. login.html主要功能代码: <script> $(function () { $("#btn_login").clic

  • 5分钟快速上手Spring Boot

    概述 与一些动态语言(如Ruby.Groovy.Node.js)相比,Java开发显得异常笨重.接触过外包项目的朋友也有所了解,如果要开发一个小型项目,首选的编程语言并不是Java,而是PHP.为什么呢?因为开发起来快!目前很多大型互联网公司的早起编程语言都是类似PHP这种能够快速开发的语言. 既然问题出现了,那必然有解决问题的方案,SpringBoot做到了.SpringBoot是由Pivotal公司所属团队研发,该公司的企业宗旨为: 致力于"改变世界构造软件的方式(We are transf

随机推荐