BDD與單元測試相關(guān)問題介紹
java的單元測試原理
原理描述
@RunWith是什么?
不同的測試工具有不同的單測規(guī)則,原理基本如上段所述。我們比較常用的單測框架有junit,而且junit的不同版本其語法規(guī)則也不一樣。比如junit3,junit4,junit5.不能混用的原因就是他們有不同的語法解析過程。用的不對等價(jià)于白用。
所以@RunWith表示junit版本比較多的情況下指定運(yùn)行的junit版本。我們開發(fā)中比較常見的有@RunWith(SpringRunner.class)、@RunWith(SpringJUnit4ClassRunner.class)、@RunWith(SpringJUnit5ClassRunner.class)等。在不指定@RunWith的時(shí)候會創(chuàng)建一個默認(rèn)簡單的單測構(gòu)造器,然后直接去執(zhí)行測試用例。@RunWith的作用是為了解決版本問題。但是有時(shí)候沒有版本問題就不需要添加這個注解。
單元測試和Spring的整合
什么是行為驅(qū)動測試
我的理解是單元測試只能針對具體的函數(shù)或者接口,但是我們的業(yè)務(wù)往往是相互連接,而且錯綜復(fù)雜的。逐個對函數(shù)進(jìn)行單測只能保證單個函數(shù)沒有問題,但當(dāng)方法組合成業(yè)務(wù)的時(shí)候,很難保證系統(tǒng)整體上沒有問題。
??????? 比如:
??????? 對于接口 A、B、C.......的隨機(jī)組合,按不同順序去請求接口,那么系統(tǒng)是否會產(chǎn)生一些出乎意料的結(jié)果?
所以,行為驅(qū)動測試是以業(yè)務(wù)人員的視角進(jìn)行測試。
如何實(shí)現(xiàn)BDD
市面上比較常用的BDD框架是cucumber 。
先做一個demo嘗嘗鮮!
1、idea安裝cucumber插件。(單元測試的main主函數(shù)從此觸發(fā))

引入maven依賴
核心解析包<dependency><groupId>io.cucumbergroupId><artifactId>cucumber-javaartifactId><version>7.1.0version>dependency><dependency><groupId>io.cucumbergroupId><artifactId>cucumber-springartifactId><version>6.9.0version>dependency>單測包<dependency><groupId>io.cucumbergroupId><artifactId>cucumber-junitartifactId><version>6.9.0version><scope>testscope>dependency>
2、編寫feature腳本
cumuber默認(rèn)的feature腳本路徑是test\resources目錄,如果沒有,我們創(chuàng)建resources目錄,我們創(chuàng)建一個簡單的add.feature

???? 這時(shí)候,我們的測試用例后邊都是白色的背景色。我們需要創(chuàng)建相關(guān)的java文件。我們alt+enter。進(jìn)行創(chuàng)建。

隨便寫點(diǎn),括號表示傳入的參數(shù)。
3、編寫測試用例

4、執(zhí)行單測
右鍵我們的feature文件


5、與spring的整合
BDD存在的問題
comuber不能mock,因?yàn)樗捎玫膉unit不是同一junit。
就到這里吧,冬天來了,注意不要感冒流鼻涕!
