1 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
首先,從技術(shù)上講,您可以使用 mockito 從類中模擬選定的方法。此功能稱為部分模擬。
第二:在某些情況下,在測(cè)試一個(gè)類以模擬來(lái)自同一類的其他方法時(shí)是有意義的。一個(gè)很好的例子是將與其他組件的交互捆綁在一起的方法(為了舉例起見(jiàn),我們稱它為do_interactions
),這樣該類的其余方法就沒(méi)有此類交互,并且僅為do_interactions
該目的調(diào)用。更具體地說(shuō),考慮一種為其他方法傳遞文件內(nèi)容的方法:它將與操作系統(tǒng)的交互(如打開(kāi)和閱讀)捆綁在一起,并只返回內(nèi)容。然后,您可以通過(guò)模擬該函數(shù)使其在測(cè)試需要時(shí)返回“模擬”文件內(nèi)容,從而輕松地執(zhí)行與操作系統(tǒng)隔離的測(cè)試。
也就是說(shuō),有些例子表明這種嘲笑是有道理的,但這不一定適用于您的情況。
第三,測(cè)試是關(guān)于發(fā)現(xiàn)錯(cuò)誤(參見(jiàn) Myers、Badgett、Sandler:軟件測(cè)試的藝術(shù),或 Beizer:軟件測(cè)試技術(shù)等),單元測(cè)試旨在發(fā)現(xiàn)那些可以在孤立代碼中找到的錯(cuò)誤.?為了有效地發(fā)現(xiàn)錯(cuò)誤,您必須進(jìn)行特定于實(shí)現(xiàn)的測(cè)試:錯(cuò)誤在實(shí)現(xiàn)中,不同的實(shí)現(xiàn)有不同的錯(cuò)誤。想一想大量的排序算法:它們都有相同的 API,但它們的實(shí)現(xiàn)卻完全不同?;蛘撸紤]實(shí)現(xiàn) Fibonacci 函數(shù)的方法:作為迭代或遞歸函數(shù),作為封閉形式的表達(dá)式 (Moivre/Binet),或作為查找表。同樣,界面始終相同,可能的錯(cuò)誤差異很大,單元測(cè)試策略也是如此。和,單元測(cè)試是最接近實(shí)現(xiàn)級(jí)別的測(cè)試級(jí)別——集成測(cè)試、子系統(tǒng)測(cè)試和系統(tǒng)測(cè)試都在上升,因此不太適合在實(shí)現(xiàn)中查找錯(cuò)誤。因此,嘗試在單元測(cè)試中保持與實(shí)現(xiàn)無(wú)關(guān)可能會(huì)導(dǎo)致測(cè)試套件效率降低。
也就是說(shuō),您確實(shí)也應(yīng)該努力降低測(cè)試維護(hù)工作量。這意味著,如果特定測(cè)試不需要特定的測(cè)試用例實(shí)現(xiàn),則不要將其具體化。并且,對(duì)于那些有充分理由是特定于實(shí)現(xiàn)的測(cè)試,仍然盡量保持較低的維護(hù)工作量,例如通過(guò)在輔助方法中提取測(cè)試的特定于實(shí)現(xiàn)的部分,以減少您必須維護(hù)的測(cè)試代碼量,以防萬(wàn)一SUT 的更改。
添加回答
舉報(bào)