spring-junit4_基于Spring的应用程序-迁移到Junit 5

spring-junit4

这是关于将基于Gradle的Spring Boot应用程序从Junit 4迁移到闪亮的新Junit 5的快速文章。Junit 4测试继续与Junit 5 Test Engine抽象一起工作,该抽象为在不同编程模型中编写的测试提供支持。例如,Junit 5支持能够运行JUnit 4测试的Vintage Test Engine。

这是一个具有JUnit 5集成的示例项目 ,以及在Junit 4和Junit 5中的示例测试– https://github.com/bijukunjummen/boot2-with-junit5-sample

样本Junit 4候选测试

作为一个候选项目,我有一个Spring Boot 2应用程序,该应用程序使用Junit 4作为测试框架,使用Kotlin编写了测试。 这是在显式调出所有依赖项的情况下样本测试的外观。 它使用Junit4的@RunWith注释加载Spring Context:

import org.assertj.core.api.Assertions.assertThat
import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest
import org.springframework.test.context.junit4.SpringRunner
import org.springframework.test.web.reactive.server.WebTestClient
import java.nio.charset.StandardCharsets@RunWith(SpringRunner::class)
@WebFluxTest(controllers = arrayOf(RouteConfig::class))
class SampleJunit4Test {@Autowiredlateinit var webTestClient: WebTestClient@Testfun `get of hello URI should return Hello World!`() {webTestClient.get().uri("/hello").exchange().expectStatus().isOk.expectBody().consumeWith({ m ->assertThat(String(m.responseBodyContent, StandardCharsets.UTF_8)).isEqualTo("Hello World!")})}}

Junit 4依赖项通过“ spring-boot-starter-test”模块可传递地引入:

testCompile('org.springframework.boot:spring-boot-starter-test')

Junit 5迁移

第一步是引入Junit 5依赖项以及Gradle插件,该插件可以运行测试:

插入:

buildscript {dependencies {....classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.2'}
}
apply plugin: 'org.junit.platform.gradle.plugin'

依存关系:

testCompile("org.junit.jupiter:junit-jupiter-api")
testRuntime("org.junit.jupiter:junit-jupiter-engine")
testRuntime("org.junit.vintage:junit-vintage-engine:4.12.2")

完成这些更改后,所有Junit 4测试都将继续在IDE中以及在执行Gradle构建时运行,此时,测试本身可以缓慢迁移。

我之前显示的测试与Junit 5 Jupiter相似,它提供了测试的编程模型:

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest
import org.springframework.test.context.junit.jupiter.SpringExtension
import org.springframework.test.web.reactive.server.WebTestClient
import java.nio.charset.StandardCharsets@ExtendWith(SpringExtension::class)
@WebFluxTest(controllers = arrayOf(RouteConfig::class))
class SampleJunit5Test {@Autowiredlateinit var webTestClient: WebTestClient@Testfun `get of hello URI should return Hello World!`() {webTestClient.get().uri("/hello").exchange().expectStatus().isOk.expectBody().consumeWith({ m ->assertEquals("Hello World!", String(m.responseBodyContent, StandardCharsets.UTF_8))})}}

需要注意的是现在,而不是使用JUnit 4 @RunWith注释,我现在用的是@ExtendWith标注,并提供SpringExtension作为一个参数,它负责加载了Spring上下文像以前一样。 Spring注释的其余部分将继续与JUnit 5一起使用。通过这种方式,可以将测试从JUnit 4缓慢移至JUnit 5。

注意事项

但是,并非一切都十分顺利,从JUnit 4迁移到JUnit 5时会遇到一些问题,其中最大的问题可能是对JUnit @Rule和@ClassRule批注的支持,并且JUnit 5文档确实详细介绍了如何实现。减轻了 。

翻译自: https://www.javacodegeeks.com/2018/01/spring-based-application-migrating-junit-5.html

spring-junit4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何理解 inode

一、inode是什么? 理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候&#xff0c…

go语言os.exit(1)_Go语言-信号os.Interrupt和信号syscall.SIGTERM的应用

实例package mainimport("fmt""os""os/signal""sync""syscall""time")func worker(stop for {select {case fmt.Println("exit")returndefault:fmt.Println("running...")time.Sleep(3)}}}fu…

深度学习基本概念笔记

注意力机制(Attention Mechanism): 注意力机制受到人类视觉注意力机制的启发,即关注图像特定部分的能力。即当神经网络发现输入数据的关键信息后,通过学习,在后继的预测阶段对其予以重点关注。 Attention Mechanism可以帮助模型对输入的X每个…

java api 开发_Java开发人员应该知道的前20个库和API

java api 开发优秀且经验丰富的Java开发人员的特征之一是对API的广泛了解,包括JDK和第三方库。 我花了很多时间来学习API,尤其是在阅读了Effective Java 3rd Edition之后 ,Joshua Bloch建议在Java 3rd Edition中使用现有的API进行开发&#x…

Linux 系统的硬链接和软链接详解

文章目录什么是链接链接用来干什么的硬链接和软链接的区别硬链接和软链接的图示总结我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),…

js如何监听元素事件是否被移除_JavaScript 监听元素是否进入/移出可视区域

JavaScript 监听元素是否进入/移出可视区域常规操作防抖节流IntersectionObserver兼容的代码常规操作通常的做法是,监听srcoll事件,根据元素的offset来判断。window.addEventListener(scroll, this.scrollHandle, true);使用getBoundingClientRec()来获取…

人工智能领域论文常见基本概念笔记

BLEU分数: 一个比较候选文本翻译与其他一个或多个参考翻译的评价分数。 AUC: 衡量学习器优劣的一种指标,Roc曲线下与坐标轴围成的面积(0.5~1),越接近1,检测方法真实性越高。 Image Caption: 一般有几种叫法:图像描述,图像标注…

okta-spring_通过Okta的单点登录保护Spring Boot Web App的安全

okta-spring“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 您可以使用SpringBoot和Okta在不到20分钟的时间内启动具有完整用户身份和…

Mac 键盘符号整理

图标介绍⌘Command⇧Shift⇪Caps Lock⌥Option Alt⌃Control↩Enter⌫Delete⌦Fn Delete↑上箭头↓下箭头←左箭头→右箭头⇞Fn ↑ Page Up⇟Fn ↓ Page DownHomeFn ←EndFn →⇥Tab 右制表符⇤Shift Tab 左制表符⎋Esc Escape⏏电源开关键

团队的英文翻译缩写_魔兽世界各种英文/拼音/缩写的翻译/解释

大灾变缩写为CTM团队副本名称缩写:VOA(国服简称为宝库,拼音缩写为BK....):Vault of Archavon 八十年代团队副本阿尔卡冯的宝库,台服译作亞夏梵穹殿。位于冬拥湖(台服译作冬握湖)。分10人和25人难度。没有困难模式。NAXX: Naxxrama…

机器学习常见基本概念笔记

机器学习 监督学习和非监督学习: 有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。比如分类和回归。 而无监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现…

adf开发_在EL表达式中引用ADF Faces组件

adf开发EL表达式通常用于在页面上指定ADF Faces组件的属性值。 有趣的是,我们可以使用component关键字来引用要为其评估EL表达式的组件实例。 这是略与此类似Java中。 例如,在以下代码段中,按钮的提示被评估为按钮的文本值,并且它…

Navicat Premium for Mac 快捷键

快捷键说明Comm R运行全部语句Shift Comm R运行当前语句Comm 1显示/隐藏左侧的导航窗格Comm 2显示/隐藏右侧的信息窗格Option Comm T隐藏工具栏Comm N创建新表Comm 添加记录Comm -删除记录Comm Y新建查询,这样会打开一个标签界面,可以在这个界…

wxpython 多线程_在wxPython中使用线程连续更新GUI的好方法?

我正在开发一个使用pythonv2.7和wxpythonv3.0的GUI应用程序。我必须不断更新我的图形用户界面,其中包含许多面板。每个面板包含一个wx.StaticText。我必须不断更新这些wx.StaticTexts。我想用threads。我还使用pubsub模块与GUI通信来更新这些wx.StaticTexts。每件事…

Pytorch代码函数笔记

1.torch.squeeze(): 要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行。 2.nn.Sequential(): 一个有序的容器,神经网络模块将按…

apache poi_将HTML转换为Apache POI的RichTextString

apache poi1.概述 在本教程中,我们将构建一个将HTML作为输入的应用程序,并使用提供HTML的RichText表示形式创建Microsoft Excel工作簿。 为了生成Microsoft Excel工作簿,我们将使用Apache POI 。 为了分析HTML,我们将使用Jericho。…

Windows 下有哪些逆天的软件?

文章目录逆天软件系列1:Everything逆天软件系列2:Total Commander逆天软件系列3:Snipaste逆天软件系列4:Microsoft To-Do逆天软件系列5:ScreenToGIF逆天软件系列6:Geek Uninstaller逆天软件系列7&#xff1…

C++中绘图工具EasyX基本操作

使用头文件 #include <graphics.h>创建和关闭图形界面 initgraph(800,600); //创建图形界面&#xff0c;参数:图形宽度&#xff0c;图形高度 closegraph(); //关闭图形界面画图形形状 //画圆&#xff0c;参数&#xff1a;圆心点x坐标&#xff0c;圆心点y坐标,半径mm c…

oracle adf_Fn函数来构建Oracle ADF应用程序

oracle adf在我之前的一篇文章中&#xff0c;我描述了如何创建一个Docker容器作为ADF应用程序的构建器。 在这里&#xff0c;我将展示如何将此容器用作 在FN平台的功能 。 首先&#xff0c;让我们更新容器&#xff0c;使其符合功能要求&#xff0c;这意味着可以将其作为接受某…

Sublime Text 4.0 4102 安装插件的问题

文章目录安装包控件&#xff08;Package Control&#xff09;如何安装插件打开 Install Package 面板搜索和安装插件无法打开 Install Package 面板的问题故障排除安装包控件&#xff08;Package Control&#xff09; 要安装插件&#xff0c;必须先安装 Package Control&#…