Machine.Specifications行為測試驅(qū)動(dòng)(BDD)框架
Machine.Specifications簡稱 MSpec ,是一個(gè)行為測試驅(qū)動(dòng)(BDD)框架,它本身并不是測試框架,而是在nUnit的基礎(chǔ)上,作了一層友好性的封裝。
行為驅(qū)動(dòng)開發(fā)(Behavior-Driven Development)是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)開發(fā)(Domain Driven Design)在測試領(lǐng)域的應(yīng)用,剔出代碼噪音。 因此,MSpec封裝nUnit之后的重點(diǎn)就在于,體現(xiàn)測試本身的業(yè)務(wù)概念: 系統(tǒng)或者模塊在某種特定環(huán)境(Context)下的行為/功能(Specifications),而不是某個(gè)類或某個(gè)方法是如何實(shí)現(xiàn)的。
這種基于上下文/功能描述(Context/Specification)的概念,可以與用戶故事很好的整合,從而,跨越代碼與需求流程之間的鴻溝。
注意,BDD本質(zhì)上仍然是測試驅(qū)動(dòng).
幾個(gè)特點(diǎn):
- 提供插件支持Resharper和TestDriven.Net運(yùn)行它的測試, 并能輸出非常優(yōu)美的Html的測試報(bào)告。
- 使用Delegate的方式寫測試代碼,需要習(xí)慣 =()=>的方式。
- 測試用例在類級(jí)別,而不是方法級(jí)別。就是說,一個(gè)類是一個(gè)測試,而不是一個(gè)方法。 好處,測試環(huán)境可以繼承,大幅減少重復(fù)代碼,使得測試的組織結(jié)構(gòu)更簡潔和合理。
- 用Extension封裝斷言語法,使得測試斷言更具閱讀性,接近自然語言。如 result.ShouldEqual("TestResult")
評(píng)論
圖片
表情
