在Java 8之前的项目中使用JUnit 5
這篇文章演示了如何在Java 8之前的項(xiàng)目中使用JUnit 5,并解釋了為什么它是一個(gè)好主意。
JUnit 5至少需要Java 8作為運(yùn)行時(shí)環(huán)境,因此您想將整個(gè)項(xiàng)目更新為Java8。但是有時(shí)由于某些原因,您無法立即將項(xiàng)目更新為Java8。例如,應(yīng)用程序服務(wù)器的版本生產(chǎn)環(huán)境中的產(chǎn)品僅支持Java7。但是由于生產(chǎn)代碼中的某些問題,更新不會(huì)很快進(jìn)行。
現(xiàn)在,問題是如何在不將生產(chǎn)代碼更新為Java 8的情況下使用JUnit 5?
在Maven中(當(dāng)然也可以在Gradle中),您可以分別為生產(chǎn)代碼和測(cè)試代碼設(shè)置Java版本。
<build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>7</source><target>7</target><testSource>8</testSource><testTarget>8</testTarget></configuration></plugin></plugins> </build>前提條件是您使用Java 8 JDK進(jìn)行構(gòu)建。
如果嘗試在Java 7生產(chǎn)代碼中使用Java 8功能,則Maven將使構(gòu)建失敗。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project junit5-in-pre-java8-projects: Compilation failure [ERROR] /home/sparsick/dev/workspace/junit5-example/junit5-in-pre-java8-projects/src/main/java/Java7Class.java:[8,58] lambda expressions are not supported in -source 7 [ERROR] (use -source 8 or higher to enable lambda expressions)現(xiàn)在,您可以在項(xiàng)目中引入JUnit 5,并開始使用JUnit 5編寫測(cè)試。
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><scope>test</scope> </dependency> <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><scope>test</scope> </dependency> <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><scope>test</scope> </dependency> <!-- junit-vintage-engine is needed for running elder JUnit4 test with JUnit5--> <dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><scope>test</scope> </dependency>您不需要遷移舊的JUnit 4測(cè)試,因?yàn)镴Unit 5具有測(cè)試引擎,可以與JUnit 5一起運(yùn)行JUnit 4測(cè)試。因此,對(duì)于新測(cè)試,請(qǐng)使用JUnit 5,并且僅在必須觸摸時(shí)才遷移JUnit 4測(cè)試。
盡管您無法將生產(chǎn)代碼更新為較新的Java版本,但將測(cè)試代碼更新為較新的Java版本有一些好處。
最大的好處是您可以在日常工作中編寫測(cè)試時(shí)開始學(xué)習(xí)新的語言功能。 您不會(huì)在生產(chǎn)代碼中犯初學(xué)者的錯(cuò)誤。 您可以使用有助于改善測(cè)試的新工具。 例如,在JUnit 5中編寫參數(shù)化測(cè)試比在JUnit 4中編寫更舒適。以我的經(jīng)驗(yàn),在參數(shù)化測(cè)試有意義的情況下,開發(fā)人員使用JUnit 5編寫參數(shù)化測(cè)試比使用JUnit 4編寫。
上述技術(shù)也適用于其他Java版本。 例如,您的生產(chǎn)代碼在Java 11上,而您想在測(cè)試代碼中使用Java 12功能。 該技術(shù)的另一個(gè)用例是在日常工作中學(xué)習(xí)另一種JVM語言,例如Groovy,Kotlin或Clojure。 然后在測(cè)試代碼中使用新語言。
這種方法有一個(gè)小陷阱。 IntelliJ IDEA無法分別設(shè)置Java版本以進(jìn)行生產(chǎn)和測(cè)試。 因此,您必須將整個(gè)項(xiàng)目設(shè)置為Java8。如果您的生產(chǎn)代碼使用正確的Java版本,則只有Maven構(gòu)建會(huì)為您提供反饋。
鏈接
- Maven項(xiàng)目設(shè)置
翻譯自: https://www.javacodegeeks.com/2019/01/using-junit-5-pre-java-8-projects.html
總結(jié)
以上是生活随笔為你收集整理的在Java 8之前的项目中使用JUnit 5的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps下一个图层快捷键(ps下一个图层快捷
- 下一篇: 绿色征途任务快捷键(绿色征途怎么加点)