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

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

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

    这是有关将基于Gradle的Spring Boot应用程序从Junit 4迁移到闪亮的新Junit 5的快速文章.Junit 4测试继续与Junit 5 Test Engine抽象一起工作,该抽象为在 ...

  2. 分布式 Spring Cloud 基于 Spring Boot 开发一整套

    Spring Boot的工程包括:  - Spring IO Platform:用于版本化应用程序的企业级分发.  - Spring Framework:用于事务管理.依赖注入.数据访问.消息传递和W ...

  3. spring_在基于Spring的Web应用程序中使用Http Session

    spring 在基于Spring的Web应用程序中拥有和使用Http会话有多种方法. 这是基于最近项目经验的总结. 方法1 只需在需要的HttpSession中注入即可. @Service publi ...

  4. “史上最全”Spring Boot详解!java程序员细节到极致的一次,魔鬼

    这本书的灵感 当时公司的技术栈全面转入Spring Boot体系,源于本书作者在公司的一次分享会上的分享.当时作者用了不到10分钟就使用Spring Boot轻松制作了一个功能完整的数据增加.删除.修 ...

  5. Spring MVC 到 Spring BOOT 的简化之路

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:juejin.im/post/5aa22d1f5188255 ...

  6. 基于java微信小程序的校园二手商城设计与实现

    基于java微信小程序的二手商城设计与实现 首先介绍一下SpringSecurity安全登陆框架 微信小程序 我用的是mysql数据库 这是我小程序的用例图 系统总体功能架构图 系统功能模块设计 数据 ...

  7. Spring Boot、Spring Cloud、Dubbo的区别

    1.Spring Boot用于快速.方便搭建单个微服务系统:框架理念为"默认大于配置": 2.Spring Cloud关注全局服务治理框架:Spring cloud基于Spring ...

  8. Spring Sercurity在Spring Boot 中的使用

    Spring Security 简介 Spring 是非常流行和成功的 Java 应用开发框架,Spring Security正是Spring家族中的成员.Spring Security 基于 Spr ...

  9. 实战:基于 Spring 的应用配置如何迁移至阿里云应用配置管理 ACM

    最近遇到一些开发者朋友,准备将原有的Java Spring的应用配置迁移到 阿里云应用配置管理 ACM 中.迁移过程中,遇到不少有趣的问题.本文将通过一个简单的样例来还原迁移过程中遇到的问题和相关解决 ...

最新文章

  1. 数字证书——密码学笔记(六)
  2. 全球与中国塑料废料粉碎机市场运营状况分析及投资风险评估报告2022-2027年版
  3. 文本文件的读写(字符流)
  4. 前端学习(2580):提升开发效率的工具
  5. 工作70:验证放在直接父级
  6. 红米note3支持html,【小米红米Note3评测】外观变化不小 金色版略显俗套_小米 红米Note3_手机评测-中关村在线...
  7. SpringCloud Hystrix介绍以及基于RestTemplate与Feign的改造
  8. 教你如何在@ViewChild查询之前获取ViewContainerRef
  9. php如何获取当前时间
  10. 解决idea创建ssm项目找不到mybatis的mapper的xml文件问题
  11. 血脂测试软件,医院检查血脂一般用什么仪器
  12. 厉害了,蚂蚁金服!创造了中国自己的数据库 OceanBase
  13. ZAB协议(ZooKeeper Atomic Broadcast)入门
  14. tagwriter汉化版_【NFC TagWriter by NXP电脑版下载2020】NFC TagWriter by NXP PC端最新版「含模拟器」...
  15. linux 下查看硬件信息(mac,IP地址,硬盘型号,序列号等)
  16. maven clean Process terminated
  17. 用 RIME 定制输入法
  18. 信号与系统 --- 线性卷积(linear convolution)
  19. android列表倒计时,RecyclerView实现列表倒计时
  20. H3 R4900 G3装系统详细步骤

热门文章

  1. bzoj#2407-探险【最短路,二进制分组】
  2. P3128-最大流Max Flow【树上差分,LCA】
  3. P3388-[模板]割点(割顶)【tarjan】
  4. 【LCT】旅游(P1505)
  5. 4、java中的流程控制(程序结构)
  6. Sentinel(二十五)之Sentinel Dashboard同步Apollo存储规则
  7. 阿里微服务架构下分布式事务Seata
  8. Java面试常问计算机网络问题
  9. 一文告诉你 Java RMI 和 RPC 的区别
  10. bootstrap样式代码案例