javascript
基于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
總結
以上是生活随笔為你收集整理的基于Spring的应用程序-迁移到Junit 5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发商备案价可以改吗现在(开发商备案价可
- 下一篇: moxy json介绍_MOXy是Gla