BDD也是在接觸spock后才了解到的一種開發(fā)方式,或者更直白的說(shuō)是ut的一種編寫思路。
過(guò)往在寫ut時(shí)會(huì)遵從:行為預(yù)設(shè)(Mock)、輸入(Dataprovider)、觸發(fā)、預(yù)期輸出(Assert)的方式來(lái)進(jìn)行單測(cè)的編排。對(duì)比BDD或者TDD方式,已經(jīng)脫離ut初衷,變成為了單測(cè)而編寫單測(cè)的行為。
Spock從概念上就顛覆了我之前對(duì)單測(cè)的認(rèn)知。所有spock的ut都要繼承specification 這個(gè)類,它定義了一種結(jié)構(gòu),就是題目所說(shuō)的BDD。以BDD的方式編寫的不僅僅是一個(gè)測(cè)試用例,而是一個(gè)對(duì)對(duì)應(yīng)代碼所提供功能的準(zhǔn)確描述。以及當(dāng)使用這種思想在編寫測(cè)試用例時(shí),頭腦中不會(huì)再去關(guān)注原方法中的邏輯細(xì)節(jié)(即不會(huì)射出箭后再畫靶),同時(shí)對(duì)于無(wú)法清晰描述其功能的方法產(chǎn)生重構(gòu)的念頭,以及會(huì)極力避免帶有副作用的方法。