JUnit 5 –设置
2015年11月, JUnit Lambda團(tuán)隊(duì)展示了他們的原型 。 此后,該項(xiàng)目更名為JUnit 5,并于2016年2月發(fā)布了Alpha版本。我們將在一系列簡(jiǎn)短文章中對(duì)其進(jìn)行探討:
- 設(shè)定
- 基本
- 建筑
- 條件
- 注射
- …
本章討論JUnit 5的設(shè)置,以便您可以針對(duì)新API編寫代碼并在IDE或構(gòu)建工具中運(yùn)行測(cè)試。
總覽
在新興的《 JUnit 5用戶指南》中可以找到您將在此處閱讀的更多內(nèi)容以及更多內(nèi)容。 請(qǐng)注意,它基于Alpha版本,因此可能會(huì)發(fā)生變化。
確實(shí),我們鼓勵(lì)我們提出問題或提出請(qǐng)求,以便JUnit 5可以進(jìn)一步改進(jìn)。 請(qǐng)利用這個(gè)機(jī)會(huì)! 這是幫助JUnit幫助我們的機(jī)會(huì)。
如有必要,此帖子將得到更新。 我在這里顯示的代碼示例可以在Github上找到。
寫作測(cè)試
junit5-api構(gòu)件中包含用于編寫測(cè)試的API。 編寫測(cè)試只需要使用您喜歡的構(gòu)建工具將其包含在項(xiàng)目中即可。
- 群組ID :org.junit5
- 工件ID :junit5-api
- 版本 :5.0.0-ALPHA
要處理一些事情,讓我們快速創(chuàng)建第一個(gè)測(cè)試 :
HelloWorldTest.java
package org.codefx.demo.junit5;import org.junit.gen5.api.Test;class HelloWorldTest {@Testvoid helloJUnit5() {System.out.println("Hello, JUnit 5.");}}見媽,不公開! 酷吧? 我目前不會(huì)討論它,但是下一篇文章將討論這個(gè)(以及其他基礎(chǔ)知識(shí)),所以請(qǐng)繼續(xù)關(guān)注。
運(yùn)行測(cè)試
隨著JUnit 5的不斷發(fā)展,缺乏對(duì)本機(jī)工具的支持。 但是有一些準(zhǔn)備工作可以使一切正常運(yùn)行。
JUnit 4運(yùn)行器
甲測(cè)試運(yùn)行稱為JUnit5可以用來(lái)作為JUnit 4運(yùn)行的一部分來(lái)運(yùn)行新的測(cè)試。 您將在自己的工件中找到它,必須將其添加到項(xiàng)目中:
- 群組ID :org.junit5
- 工件ID :junit4-runner
- 版本 :5.0.0-ALPHA
運(yùn)行程序?qū)⒄{(diào)用實(shí)際運(yùn)行JUnit 5測(cè)試的引擎。 引擎還具有自己的工件,您必須添加以下工件:
- 群組ID :org.junit5
- 工件ID :junit5-engine
- 版本 :5.0.0-ALPHA
要運(yùn)行項(xiàng)目中的所有測(cè)試,最簡(jiǎn)單的為其創(chuàng)建測(cè)試套件的方法是:
package org.codefx.demo.junit5;import org.junit.gen5.junit4.runner.JUnit5; import org.junit.gen5.junit4.runner.Packages; import org.junit.runner.RunWith;@RunWith(JUnit5.class) @Packages({ "org.codefx.demo.junit5" }) public class TestWithJUnit5 { }注意,該類必須是常規(guī)的JUnit 4測(cè)試類,即,它必須遵守通用的命名約定,并且必須是公共的。 @ Packages-annotation將包解釋為層次結(jié)構(gòu),因此它將在所有以org.codefx.demo.junit5為前綴的包中運(yùn)行所有測(cè)試。 如果愿意,可以直接在JUnit 5測(cè)試類上使用相同的運(yùn)行器。 在這種情況下,它們必須是公開的。
現(xiàn)在我們完成了! 您最喜歡的IDE和構(gòu)建工具將愉快地運(yùn)行帶有@RunWith(JUnit5.class)注釋的類,從而運(yùn)行新的JUnit 5測(cè)試。
在真正的JUnit 5支持出現(xiàn)之前,某些功能可能無(wú)法使用,例如,IDE將無(wú)法運(yùn)行單獨(dú)的測(cè)試方法。 但是暫時(shí)我發(fā)現(xiàn)這是最簡(jiǎn)單,最不依賴工具的解決方案。
生成工具支持
JUnit團(tuán)隊(duì)已經(jīng)在努力實(shí)現(xiàn)對(duì)JUnit 5的構(gòu)建工具支持,即不通過(guò)JUnit 4繞道而行?;镜腉radle插件和Maven Surefire提供程序已啟動(dòng)并正在運(yùn)行。 這兩個(gè)項(xiàng)目都計(jì)劃在某個(gè)時(shí)候移交給各自的社區(qū)。
兩者都有示例項(xiàng)目( Gradle和Maven )。 有關(guān)更多詳細(xì)信息,請(qǐng)參閱用戶指南 。
命令行的勝利!
如果這一切對(duì)您來(lái)說(shuō)太花哨了,請(qǐng)嘗試console console ,它可以讓您直接從命令行運(yùn)行測(cè)試。 要獲取它,您可以下載此ZIP 。
不幸的是它不能開箱即用 。 我不得不將上述的junit5-api和junit5-engine工件放到lib中,然后在bin中的腳本中將類路徑定義編輯為CLASSPATH = $ APP_HOME / lib / *,以使其工作。
忽略其他依賴項(xiàng)(例如,在其他測(cè)試庫(kù)上),可以按以下方式使用它:
使用junit控制臺(tái)
# run all tests junit-console -p ${path_to_compiled_test_classes} -a # run a specific test junit-console-p ${path_to_compiled_test_classes}org.codefx.demo.junit5.HelloWorldTest發(fā)布時(shí)間由托馬斯LETH -奧爾森在CC-BY-SA 2.0
兼容性
您可能已經(jīng)注意到,JUnit 5占用了一個(gè)新的名稱空間:org.junit.gen5。 這意味著當(dāng)在同一項(xiàng)目中使用不同的JUnit版本時(shí),不會(huì)有沖突。
實(shí)際上,一個(gè)項(xiàng)目可以包含并運(yùn)行來(lái)自不同版本的測(cè)試而不會(huì)出現(xiàn)問題,這允許緩慢遷移到JUnit5。我們?cè)谘芯縅Unit的新體系結(jié)構(gòu)時(shí)將重新討論該主題。
通過(guò)異常與JUnit通信的測(cè)試庫(kù)(如Hamcrest和AssertJ)將繼續(xù)在新版本中工作。 使用Mockito和AssertJ查看完整的HelloWorldTest版本示例。
反射
對(duì)于我們的JUnit 5設(shè)置,我們?cè)陧?xiàng)目中包括了junit5-api,junit5-engine和junit4-runner,編寫了第一個(gè)最小測(cè)試用例,并將其作為JUnit 4測(cè)試套件的一部分運(yùn)行。
下一篇文章將探討如何在JUnit 5中編寫測(cè)試的基礎(chǔ)知識(shí)。
翻譯自: https://www.javacodegeeks.com/2016/02/junit-5-setup.html
總結(jié)
以上是生活随笔為你收集整理的JUnit 5 –设置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java jigsaw_是从Java 8
- 下一篇: jgroups传输消息_使用JGroup