日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)

發(fā)布時(shí)間:2023/12/3 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用類似BDD的語法,Java 8和Mockito-AssertJ二重奏為Idea調(diào)整JUnit測(cè)試類模板。

本文涵蓋的主題似乎很簡(jiǎn)單。 但是,根據(jù)我的培訓(xùn)師經(jīng)驗(yàn),我知道(不幸的是)這不是常見的做法。 因此,我決定寫這篇簡(jiǎn)短的博客文章來傳播它們,并在將來能夠引用它。

我最喜歡的Java(和Groovy)測(cè)試框架是Spock 。 但是,它的模擬不適用于某些目的,我仍然在各種地方使用Mockito。 此外,我仍然針對(duì)已經(jīng)在該堆棧中具有測(cè)試套件并且希望在不更改已知技術(shù)的情況下提高其技能的團(tuán)隊(duì),在JUnit / Mockito / AssertJ變體中進(jìn)行很多測(cè)試培訓(xùn) 。 因此,作為一個(gè)插曲,此博客文章介紹了純Java風(fēng)格的測(cè)試,并假設(shè)您已經(jīng)在使用Mockito和AssertJ(如果在其他情況下,請(qǐng)嘗試一下),則建議如何調(diào)整JUnit測(cè)試框架。

此博客文章由樹部分組成。 首先,我提出了一種BDD樣式的基于節(jié)的測(cè)試結(jié)構(gòu),以使您的測(cè)試更一致,更易讀。 接下來,我將說明如何使用Java 8使用AssertJ和Mockito進(jìn)行簡(jiǎn)化。最后但并非最不重要的一點(diǎn)是,我將展示如何在IntelliJ IDEA中將其配置為默認(rèn)的JUnit測(cè)試(類)模板(這并不簡(jiǎn)單)這應(yīng)該)。

第1部分。BDD樣式的部分

編寫良好的單元測(cè)試應(yīng)滿足幾個(gè)要求(但這是單獨(dú)發(fā)布的主題)。 有用的做法之一是將3個(gè)代碼塊明確劃分為具有明確定義的職責(zé)。 您可以在我以前的博客文章中閱讀有關(guān)該主題的更多信息 。

作為重復(fù),僅以簡(jiǎn)短形式列出了核心規(guī)則:

  • given –測(cè)試中的對(duì)象初始化+存根/模擬的創(chuàng)建,存根和注入
  • when –在給定測(cè)試中進(jìn)行測(cè)試的操作
  • then –收到結(jié)果聲明+模擬驗(yàn)證(如果需要)
@Test public void shouldXXX() {//given...//when...//then... }

這種分離有助于保持測(cè)試的簡(jiǎn)短性,并將重點(diǎn)放在測(cè)試的一項(xiàng)責(zé)任上(最終這只是一個(gè)單元測(cè)試)。

在Spock中,這些部分是必填(*)–沒有它們,測(cè)試甚至無法編譯。 在JUnit中只有注釋。 但是,將它們放置在適當(dāng)位置會(huì)鼓勵(lì)人們使用它們,而不是在內(nèi)部放置一大堆混亂(對(duì)于在測(cè)試區(qū)域中的新手尤其有用)。

順便說一句,提到的“先給后定”約定基于更廣泛的“ 行為驅(qū)動(dòng)開發(fā)”概念(是其子集)。 您可能會(huì)在3個(gè)代碼塊上遇到類似的劃分,這些代碼塊稱為ranging-act-assert,通常等效。

第2部分。AssertJ和Mockito的Java 8

Java 8的功能之一是能夠?qū)⒛J(rèn)方法放入接口中。 這可以用來簡(jiǎn)化對(duì)靜態(tài)方法的調(diào)用,這在測(cè)試框架(如AssertJ和Mockito)中很普遍。 這個(gè)想法很簡(jiǎn)單。 愿意使用給定框架的測(cè)試類可以實(shí)現(xiàn)專用接口,以在IDE中完成代碼時(shí)將這些方法“視為”它們自己的方法(而不是外部類的靜態(tài)方法,這些方法要求在輸入類名之前或靜態(tài)導(dǎo)入) 。 那些默認(rèn)方法只是將執(zhí)行委托給靜態(tài)方法。 您可以在我的其他博客文章中了解更多信息 。

AssertJ本機(jī)支持從3.0.0版本開始的那些構(gòu)造。 Mockito 1.10和2.x與Java 6兼容,因此需要使用一個(gè)第三方項(xiàng)目– mockito-java8 (一旦可用,應(yīng)將其集成到Mockito 3中)。

為了從Idea中更輕松的方法完成中受益,實(shí)現(xiàn)兩個(gè)接口就足夠了:

import info.solidsoft.mockito.java8.api.WithBDDMockito; import org.assertj.core.api.WithAssertions;class SampleTest implements WithAssertions, WithBDDMockito {}

第3部分。Idea中的默認(rèn)模板

我是無所不在的自動(dòng)化的狂熱愛好者。 在測(cè)試類中同時(shí)自動(dòng)設(shè)置“先給定”部分和額外的接口,這不是很好嗎? 讓我們從生活中消除那些無聊的事情。

測(cè)試方法

更改JUnit測(cè)試方法很容易。 一種可能的方式是“ CTRL-SHIFT-A->文件模板->代碼”,并將JUnit4 Test Method修改為:

@org.junit.Test public void should${NAME}() {//given${BODY}//when//then }

要在現(xiàn)有測(cè)試類中添加新測(cè)試,只需按ALT-INSERT并選擇(或鍵入) JUnit4 Test Method 。

測(cè)試班

在整個(gè)測(cè)試課程中,情況要復(fù)雜一些。 Idea提供了一種編輯現(xiàn)有模板的方法,但是,僅當(dāng)使用生產(chǎn)類中的CTRL-SHIFT-T生成測(cè)試時(shí)才使用該方法。 對(duì)于TDD,首先要?jiǎng)?chuàng)建一個(gè)測(cè)試不是很方便。 如果在測(cè)試上下文中的程序包視圖中按了ALT-INSERT則最好在“ Java類”旁邊顯示一個(gè)新位置“ New JUnit測(cè)試類”。 不幸的是,要做到這一點(diǎn),就需要編寫一個(gè)新插件(Spock的示例實(shí)現(xiàn) )。 作為解決方法,我們可以定義一個(gè)常規(guī)文件模板(作為限制),該模板可在任何地方(例如,即使在資源目錄中)訪問。

執(zhí)行“ CTRL-SHIFT-A->文件模板->文件”,按INSERT ,將模板命名為“具??有AssertJ和Mockito Test的JUnit”,將擴(kuò)展名設(shè)置為“ java”,然后粘貼以下模板:

package ${PACKAGE_NAME};import info.solidsoft.mockito.java8.api.WithBDDMockito; import org.assertj.core.api.WithAssertions;#parse("File Header.java") public class ${NAME} implements WithAssertions, WithBDDMockito {}

展示柜

我們已經(jīng)準(zhǔn)備好了。 讓我們檢查一下它在實(shí)際中的外觀(單擊以放大動(dòng)畫)。

摘要

我希望我說服您調(diào)整測(cè)試模板以提高測(cè)試的可讀性并確保每個(gè)測(cè)試幾次擊鍵。 在這種情況下,請(qǐng)立即花費(fèi)4分鐘在您的Idea中對(duì)其進(jìn)行配置。 根據(jù)編寫的許多測(cè)試,它可能會(huì)比您期望的更快開始回報(bào):)。

順便說一句,十月初,我將在克拉科夫的JDD 上介紹 Mockito 2的新功能。

自我提升 。 您想快速有效地提高您和您的團(tuán)隊(duì)的測(cè)試技能以及對(duì)Spock / JUnit / Mockito / AssertJ的了解嗎? 我進(jìn)行了濃縮(單元) 測(cè)試培訓(xùn) ,您可能會(huì)覺得有用。

翻譯自: https://www.javacodegeeks.com/2017/09/modern-tdd-oriented-java-8-junit-test-template-idea-mockito-assertj.html

總結(jié)

以上是生活随笔為你收集整理的适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产suv精品一区二区69 | 在线日韩视频 | 久久久蜜桃一区二区人 | 午夜婷婷在线观看 | 亚洲a精品 | 精品视频91 | 久久精品一二三 | 亚洲人在线观看视频 | 国产精品麻豆入口 | 久99久视频| 国产精品第7页 | 色牛影院 | 国产精品久久久久久一区二区三区 | 久久成人精品一区二区 | 天天干天天看 | 欧美三级三级三级爽爽爽 | 一区二区三区有限公司 | 男人av在线| 日本特黄一级 | 欧美另类精品 | 国产女主播在线 | 性xxxxx大片免费视频 | 国产熟女高潮视频 | 久久精品99国产精 | 日韩欧美综合视频 | 国产一级免费视频 | 免费av一区二区三区 | jizzjizz在线观看 | 色av免费| 亚洲乱码国产乱码精品精98午夜 | 第一毛片 | 午夜视频91| 97久久久 | 国产又粗又硬视频 | 免费无码不卡视频在线观看 | 国产精品美女一区 | 国产第一区第二区 | 黑人巨大精品一区二区在线 | 欧美人伦 | 黄色免费成人 | 香蕉国产999 | 伊人婷婷久久 | 免费av在线播放网址 | 国产粉嫩在线观看 | 一进一出视频 | 少妇被又大又粗又爽毛片久久黑人 | 日本美女黄网站 | av综合导航| 久一在线 | 亚洲偷 | 国产综合在线播放 | 国产一区二区在线视频 | 青青草日韩 | 四虎国产精品永久在线国在线 | 久久国产精品一区二区 | 久久精品国产亚洲av久一一区 | 国产在线综合网 | 精品国产av色一区二区深夜久久 | 日本黄色性视频 | 日韩成人精品视频 | 久久久久久国产精品免费 | 欧美成人做爰猛烈床戏 | 你懂的在线播放 | 国产精品jizz在线观看无码 | 香蕉视频亚洲一级 | 国产一级片毛片 | 丁香六月色婷婷 | 日批在线 | 波多野结衣电车痴汉 | 丰满少妇在线观看bd | 激情图片在线观看 | 2019天天干 | 日韩中文字幕亚洲 | 男女做激情爱呻吟口述全过程 | 性欧美hd调教 | 91丨九色丨黑人外教 | 国产精品视频不卡 | 日韩av片在线免费观看 | 亚洲区综合 | 日本一区二区在线看 | 极品少妇xxxx精品少妇偷拍 | 亚洲午夜影视 | 天天夜夜骑| av2014天堂| 国产精品久久久久久久久久免费看 | 成在线人免费视频 | 韩国电影大尺度在线观看 | 日韩中文字幕久久 | 美女少妇一区二区 | 国产日产精品一区二区 | 午夜在线观看影院 | 男女午夜影院 | www天堂av| 天天拍天天射 | 69国产视频| 亚洲乱妇老熟女爽到高潮的片 | 春色影视 | 人人草网站 | 二区三区视频 |