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