javascript
spring-junit4_基于Spring的应用程序-迁移到Junit 5
spring-junit4
這是關(guān)于將基于Gradle的Spring Boot應(yīng)用程序從Junit 4遷移到閃亮的新Junit 5的快速文章。Junit 4測(cè)試?yán)^續(xù)與Junit 5 Test Engine抽象一起工作,該抽象為在不同編程模型中編寫的測(cè)試提供支持。例如,Junit 5支持能夠運(yùn)行JUnit 4測(cè)試的Vintage Test Engine。
這是一個(gè)具有JUnit 5集成的示例項(xiàng)目 ,以及在Junit 4和Junit 5中的示例測(cè)試– https://github.com/bijukunjummen/boot2-with-junit5-sample
樣本Junit 4候選測(cè)試
作為一個(gè)候選項(xiàng)目,我有一個(gè)Spring Boot 2應(yīng)用程序,該應(yīng)用程序使用Junit 4作為測(cè)試框架,使用Kotlin編寫了測(cè)試。 這是在顯式調(diào)出所有依賴項(xiàng)的情況下樣本測(cè)試的外觀。 它使用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依賴項(xiàng)通過(guò)“ spring-boot-starter-test”模塊可傳遞地引入:
testCompile('org.springframework.boot:spring-boot-starter-test')Junit 5遷移
第一步是引入Junit 5依賴項(xiàng)以及Gradle插件,該插件可以運(yùn)行測(cè)試:
插入:
buildscript {dependencies {....classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.2'} } apply plugin: 'org.junit.platform.gradle.plugin'依存關(guān)系:
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測(cè)試都將繼續(xù)在IDE中以及在執(zhí)行Gradle構(gòu)建時(shí)運(yùn)行,此時(shí),測(cè)試本身可以緩慢遷移。
我之前顯示的測(cè)試與Junit 5 Jupiter相似,它提供了測(cè)試的編程模型:
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))})}}需要注意的是現(xiàn)在,而不是使用JUnit 4 @RunWith注釋,我現(xiàn)在用的是@ExtendWith標(biāo)注,并提供SpringExtension作為一個(gè)參數(shù),它負(fù)責(zé)加載了Spring上下文像以前一樣。 Spring注釋的其余部分將繼續(xù)與JUnit 5一起使用。通過(guò)這種方式,可以將測(cè)試從JUnit 4緩慢移至JUnit 5。
注意事項(xiàng)
但是,并非一切都十分順利,從JUnit 4遷移到JUnit 5時(shí)會(huì)遇到一些問(wèn)題,其中最大的問(wèn)題可能是對(duì)JUnit @Rule和@ClassRule批注的支持,并且JUnit 5文檔確實(shí)詳細(xì)介紹了如何實(shí)現(xiàn)。減輕了 。
翻譯自: https://www.javacodegeeks.com/2018/01/spring-based-application-migrating-junit-5.html
spring-junit4
總結(jié)
以上是生活随笔為你收集整理的spring-junit4_基于Spring的应用程序-迁移到Junit 5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 剪视频需要什么电脑配置剪视频需要什么配置
- 下一篇: gradle idea java ssm