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

这是有关将基于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

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

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

相关文章

查询阜阳2021高考成绩,2021年阜阳高考成绩排名及成绩公布时间什么时候出来

阜阳高考结束后,每年都有很多家长和考试不知道阜阳高考成绩排名如何查询、阜阳高考成绩什么时候公布以及查询方式,本文小编整理了阜阳高考成绩查询排名的相关知识。一、阜阳高考成绩公布时间及查询方式根据往年阜阳高考成绩公布时间预测,2021…

martin fowler_用Java和Java 8创建内部DSL,采用Martin Fowler的方法

martin fowler目前,我正在阅读Martin Fowler撰写的有关DSL- 特定领域语言的精彩书籍。 围绕DSL的嗡嗡声,围绕轻松支持DSL创建的语言,以及DSL的使用,使我好奇地了解和学习DSL的这一概念。 到目前为止,这本书的使用经验令…

2021高考厦门一中成绩查询,2021年厦门中考成绩和分数线什么时候公布(附查询入口)...

每年中考结束后很多考生和家长都很关心成绩什么时候公布,中考分数线什么时候公布?然而你离彻底解放就只差一步——查分数!查分数,比上考场考试还要紧张啊!考分不知道,玩耍似心跳。那么2019年厦门中考成绩什…

Java开发人员应该知道的前20个库和API

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

计算机桌面文字重影,电脑桌面字有重影怎么办

1.电脑字体重影怎么办可以尝试以下4种方法:1. 右击“我的电脑”,依次单击“属性/高级/性能设置”在“视觉效果”页中将“在桌面上为图标标签使用阴影”选中,单击确定即可。2. 右键桌面空白处右击,在“排列图标”里去掉“锁定桌面的…

打磨锤子计算机专业,钳工磨锤子实训心得体会

钳工磨锤子实训心得体会实训是职业技能实际训练的简称,是指在学校控制状态下,按照人才培养规律与目标,对学生进行职业技术应用能力训练的教学过程。钳工磨锤子实训心得体会,我们来看看。钳工磨锤子实训心得体会1前言:通过这次的钳工实习报告,…

吸气剂和二传手被认为有害

Java程序员习惯性地用“ getters”和“ setters”来修饰类,这种做法根深蒂固,以至于几乎没有人质疑为什么这样做或是否应该这样做。 最近,我认为最好不要这样做,并且我开始在编写的Java代码中避免使用它。 在这篇博客文章中&#…

html编辑器设置为publisher,将PDF转换为Publisher的简单方法

二、 如何把PDF文件转换为Publisher支持的图片格式一些专业的软件或者在线网站都可以帮助我们把PDF文件转换为Publisher支持的图片格式。下面将提供几种支持PDF文件转换为图片格式的方法。(1) 使用都叫兽™PDF转换器进行格式转换热点推荐 - ADs都叫兽™PDF转换器 - 多功能的PDF…

Oracle应用容器云上的WildFly Swarm

在此博客文章中,我将描述如何将打包在WildFly Swarmber -jar中的CloudEE Duke应用程序部署到Oracle Application Container Cloud 。 在Oracle Application Container Cloud中进行部署所需的部署工件是一个ZIP归档文件,其中包含应用程序ber-jar和清单文…

适合学计算机用的机械键盘,一款好用的机械键盘应该怎么选?看完这篇就明白了...

一款好用的机械键盘应该怎么选?看完这篇就明白了2019-07-30 15:53:134点赞14收藏3评论今天给大家带来好物推荐第1期——机械键盘。作为在办公室办公的从业者们,平时工作中与电脑的接触时间最多。而人与电脑的交互主要靠键盘和鼠标,其中使用最…

六年级计算机课学什么时候,六年级信息技术《进一步了解计算机》教学设计

六年级信息技术《进一步了解计算机》教学设计教学目标知识与技能:1.了解计算机的五大部件2.了解各种典型的、常见的输入设备、输出设备、存储器等。过程与方法:通过学生利用教师提供的主题资源网站自主学习,了解计算机五大部件。情感、态度与…

asciidoc文件阅读_可搜索的文件? 是的你可以。 选择AsciiDoc的另一个原因

asciidoc文件阅读Elasticsearch是一个基于Apache Lucene的灵活,功能强大的开源,分布式实时云搜索和分析引擎,可提供全文搜索功能。 它是面向文档且无架构的。 Asciidoctor是一个纯Ruby处理器,用于将AsciiDoc源文件和字符串转换为…

专转本计算机专业录取分数线,2018江苏专转本各专业分数线一览!

原标题:2018江苏专转本各专业分数线一览!2018江苏专转本分数线梳理018江苏专转本考试已过去四个月,分数线已经公布了三个多月。按照分数线进行梳理大致情况如下:300分以上院校专业常州大学的财务管理 320分独占鳌头。300分以上分数…

坚实原则:开放/封闭原则

先前我们讨论了单一责任原则。 关于实体原则首字母缩写, 打开/关闭原则是该行中的第二个原则。 “软件实体(类,模块,功能等)应打开以进行扩展,但应关闭以进行修改” 通过采用该原理,目标是在不…

trim函数 html,trim、stripslashes、htmlspecialchars函数

通过 PHP 验证表单数据我们要做的第一件事是通过 PHP 的 htmlspecialchars() 函数传递所有变量。在我们使用 htmlspecialchars() 函数后,如果用户试图在文本字段中提交以下内容:location.href(http://www.hacked.com)- 代码不会执行,因为会被…

有效的Java第三版有哪些新功能?

自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容。 我假设将涵盖自Java 6以来引入Java的功能,的确如此。 但是,第三版Java开发人员经典版也有一些其他更改。 在本文中,我提供了有关在第三版中添加&#xff0…

综合知识计算机类编制,天津事业编综合知识是什么

天津事业编综合知识有三类,分别是文字综合类、财会类、计算机类,考试时根据岗位考试要求进行一类综合知识的考核,均为主客观性试题,考试时限为150分钟,满分为100分。综合知识(文字综合类)简介(一)测试内容综合知识(文字…

哥大计算机科学学费,哥大计算机科学专业成功案例解析!!!

学生背景:学生:刘同学本科背景:北京大学 生物工程专业GPA: 3.5/4.0雅思7.5 GRE320录取院校:哥伦比亚大学—MS in Computer Science计算机科学硕士规划分析:1、背景分析L同学本科读的是生物工程专业,因为同学…

moxy json介绍_MOXy是GlassFish 4中新的默认JSON绑定提供程序

moxy json介绍GlassFish 4现在可以提供完整的Java EE 7(JSR-342)平台。 EclipseLink为该发行版做出了一些重大贡献。 首先是提供JPA 2.1(JSR-338)实现。 我将在本文中介绍的第二个内容是EclipseLink MOXy,它现在是JAX-…

大学计算机科技论文格式,《中国科技论文在线》稿件格式

《中国科技论文在线》期刊以中国科技论文在线网站http://www.paper.edu.cn/ 为基础,对在线发表论文进行评审,将评选的优秀论文作为期刊的主要稿源。稿件格式如下:中文标题(20字以内)作者11,作者22,……(1. 学校 院系,城…