「译」JUnit 5 系列:环境搭建
原文地址:http://blog.codefx.org/libraries/junit-5-setup/
原文日期:15, Feb, 2016
譯文首發(fā):Linesh 的博客:環(huán)境搭建
我的 Github:http://github.com/linesh-simplicity
2015年11月,Junit Lambda 團(tuán)隊(duì)發(fā)布了該項(xiàng)目的 第一版原型 。此后,該項(xiàng)目把名稱改成了 JUnit 5 并獨(dú)立了出來(lái),隨后在2016年2月份的時(shí)候發(fā)布了一個(gè) alpha 版本。本篇打算以一系列文章,簡(jiǎn)短地探索一下以下幾個(gè)方面:
- 環(huán)境搭建
- 基礎(chǔ)入門
- 架構(gòu)體系
- 擴(kuò)展模型(Extension Model)
- 條件斷言
- 注入
- 動(dòng)態(tài)測(cè)試
- ...
(如果不喜歡看文章,你可以戳這里看我的演講,或者看一下最近的 vJUG 講座,或者我在 DevoxxPL 上的 PPT。
本篇將介紹 JUnit 5 的環(huán)境搭建,看完之后你應(yīng)該能夠使用新的 API 來(lái)撰寫測(cè)試,并且使用你喜歡的 IDE 或構(gòu)建工具來(lái)跑這些測(cè)試了。
概述
本系列文章都基于 Junit 5發(fā)布的先行版 Milestone 2。它可能會(huì)有變化。如果有新的里程碑(milestone)版本發(fā)布,或者試用版正式發(fā)行時(shí),我會(huì)再來(lái)更新這篇文章。
這里要介紹的多數(shù)知識(shí)你都可以在 JUnit 5 用戶指南 中找到(這個(gè)鏈接指向的是先行版 Milestone 2,想看的最新版本文檔的話請(qǐng)戳這里),并且指南還有更多的內(nèi)容等待你發(fā)掘。下面的所有代碼都可以在 我的 Github 上找到。
目錄
- 第一個(gè)測(cè)試
- 運(yùn)行測(cè)試
- 使用 JUnit 4 runner
- IDE 的支持
- 構(gòu)建工具的支持
- 命令行支持也不賴
- 向下兼容性
- 回顧
- 分享&關(guān)注
第一個(gè)測(cè)試
支持測(cè)試撰寫的 API 包含在junit-jupiter-api 包中。在構(gòu)建工具中引入這個(gè)包,就行了。這就是全部,你就可以開始寫測(cè)試了。
- Group ID: org.junit.jupiter
- Artifact ID: junit-jupiter-api
- Version: 5.0.0-M2
我們來(lái)寫第一個(gè)測(cè)試吧,此處簡(jiǎn)單最好:
package org.codefx.demo.junit5;import org.junit.jupiter.api.Test;class HelloWorldTest {@Testvoid helloJUnit5() {System.out.println("Hello, JUnit 5.");}}看起來(lái)怎樣?沒(méi) public ,感覺(jué)帥氣不?這里我不會(huì)太深入細(xì)節(jié)講解,不過(guò)下一篇我會(huì)深入討論下這個(gè)(以及其他的一些基礎(chǔ))。請(qǐng)別急,接著往下看。
運(yùn)行測(cè)試
JUnit 5 是一代全新的測(cè)試框架,不過(guò)工具內(nèi)置的支持則還未完全跟上。好在目前已有簡(jiǎn)易的方法來(lái)運(yùn)行 JUnit 5 及其測(cè)試。
使用 JUnit 4 runner
JUnit 團(tuán)隊(duì)提供了一個(gè) JunitPlatform runner,可以使用它在 Junit 4 上運(yùn)行 JUnit 5 的測(cè)試。這個(gè) runner 在另一個(gè)包下,因此你也必須將它加入到你的項(xiàng)目中:
- Group ID: org.junit.platform
- Artifact ID: junit-platform-runner
- Version: 1.0.0-M2
這個(gè) runner 最終會(huì)調(diào)用 Junit 引擎,后者才是真正運(yùn)行 Junit 5 測(cè)試的部分。引擎也是在不同的包下,你也必須將它加入到項(xiàng)目中:
- Group ID: org.junit.jupiter
- Artifact ID: junit-jupiter-engine
- Version: 5.0.0-M2
要運(yùn)行項(xiàng)目中所有的測(cè)試,為它們創(chuàng)建一個(gè)測(cè)試套件是最簡(jiǎn)單的做法:
package org.codefx.demo.junit5;import org.junit.platform.runner.JUnitPlatform; import org.junit.platform.runner.SelectPackages; import org.junit.runner.RunWith;@RunWith(JUnitPlatform.class) @SelectPackages({ "org.codefx.demo.junit5" }) public class TestWithJUnit5 { }不過(guò)請(qǐng)注意,這個(gè)類必須是一個(gè) JUnit 4 的測(cè)試類,也即是說(shuō)它必須遵循 一般的命名規(guī)范,并且必須是 public 的。@SelectPackages 注解會(huì)把包當(dāng)做一個(gè)有層級(jí)的結(jié)構(gòu),因此它會(huì)負(fù)責(zé)跑 org.codefx.demo.junit5 開頭的包下的所有測(cè)試。
至此所有工作都完成了!你的 IDE 和構(gòu)建工具應(yīng)該都能運(yùn)行這個(gè) @RunWith(JUnitPlatform.class) 注解的測(cè)試類了,它會(huì)負(fù)責(zé)跑所有的 JUnit 5 的新測(cè)試。
不過(guò)在 JUnit 5 被完全支持之前,一些特性可能還不能工作,比如 IDE 無(wú)法運(yùn)行單獨(dú)的測(cè)試等。不過(guò)目前為止,這是我發(fā)現(xiàn)的最簡(jiǎn)單并且在多平臺(tái)下均工作良好的方案了。
IDE 的支持
Intellij IDEA 2016.2 開始 對(duì) JUnit 5 有了基本的支持。盡管支持還不是很完美,并且還需時(shí)刻關(guān)注 JUnit 5 的發(fā)展,不過(guò)畢竟最基本的支持有了,現(xiàn)在使用 JUnit 5 已經(jīng)簡(jiǎn)單得多了。
Eclipse 方面團(tuán)隊(duì) 仍在著手于內(nèi)置支持的開發(fā)。
構(gòu)建工具的支持
JUnit 團(tuán)隊(duì)在為構(gòu)建工具提供 JUnit 5 支持的基礎(chǔ)上已經(jīng)做了大量的工作,比如提供與 JUnit 4 的兼容等。目前,我們已經(jīng)有了一個(gè)可以工作的 Gradle 插件和 Maven Surefire 插件。這兩個(gè)項(xiàng)目都計(jì)劃在接下來(lái)的時(shí)間里交給各自的社區(qū)去開發(fā)和維護(hù)。
在如何集成這兩個(gè)構(gòu)建工具(Gradle和Maven)的插件上,已經(jīng)各有一個(gè)示例代碼庫(kù)。更多細(xì)節(jié)請(qǐng)前往 官方用戶指南 。
命令行支持也不賴
如果你覺(jué)得你就想靜靜地跑個(gè)測(cè)試,上面介紹的 IDE 和構(gòu)建工具都太復(fù)雜了,那么建議你試下這個(gè) 控制臺(tái) launcher,它支持你直接在命令行運(yùn)行測(cè)試。要使用它,請(qǐng) 下載這個(gè) zip 包。
遺憾的是,它 還需要你做些配置,而非拿來(lái)即用的。你需要將上面提到的兩個(gè)包 junit-jupiter-api 和 junit-jupiter-engine 移動(dòng)到 lib 目錄下,并編輯 bin 下執(zhí)行腳本的 classpath 使其指向你的 lib 目錄:CLASSPATH=$APP_HOEM/lib/*。這樣該 launcher 才能運(yùn)行。
不考慮其他依賴的話,這個(gè)執(zhí)行腳本大概長(zhǎng)得像這樣:
# run all tests junit-platform-console -p ${path_to_compiled_test_classes} -a # run a specific test junit-platform-console-p ${path_to_compiled_test_classes}org.codefx.demo.junit5.HelloWorldTest向下兼容性
你可能注意到了,JUnit 5 啟用了新的包名:org.junit.jupiter、org.junit.platform 和 org.junit.vintage (這個(gè)包我們尚未談到)。我們待會(huì)再討論它們的含義,現(xiàn)在我們只需知道,這意味著你可以在一個(gè)項(xiàng)目中使用不同的 JUnit 版本,這就夠了。
允許在同個(gè)項(xiàng)目中使用多個(gè)版本的 JUnit 來(lái)進(jìn)行測(cè)試,這使得你能緩緩遷移到 JUnit 5上。關(guān)于遷移,我們?cè)谔接?JUnit 新的架構(gòu) 時(shí)會(huì)再回顧這個(gè)話題。
通過(guò)異常(exceptions)于 JUnit 交互的測(cè)試庫(kù),諸如 Hamcrest 和 AssertJ 等,易燃可以在 JUnit 的新版本下工作。這里有個(gè)使用 Mockito 和 AssertJ 寫的 HelloWorldTest 測(cè)試,有興趣的同學(xué)可以看下。
回顧
在這篇 JUnit 5 環(huán)境搭建的文章中,我們介紹了 junit-jupiter-api 和 junit-jupiter-engine 兩個(gè)包,在項(xiàng)目中使用了 junit-platform-runner ,寫了第一個(gè)最簡(jiǎn)單的測(cè)試用例,并將它作為 JUnit 4 測(cè)試套件的一部分運(yùn)行了起來(lái)。
下篇文章 我會(huì)討論使用 JUnit 5 撰寫測(cè)試的一些基礎(chǔ)知識(shí)。
轉(zhuǎn)載于:https://www.cnblogs.com/natasha-yarovenko/p/5879628.html
總結(jié)
以上是生活随笔為你收集整理的「译」JUnit 5 系列:环境搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: grid列的值格式化
- 下一篇: sql server 触发器应用 ins