单元测试反模式,完整列表
我前段時間寫過有關(guān)OOP中的反模式的文章 。 現(xiàn)在該寫單元測試反模式了,因為它們也存在,并且有很多。 我將嘗試在列表中包括我知道的每個示例。 如果您認識其他任何人,請通過請求請求將其添加,或在下面發(fā)表評論。 對于每個反模式,如果不是我的,我將嘗試提及它的發(fā)現(xiàn)位置。 請記住,如果我在某處找到它,并不一定意味著它是在那發(fā)明的。 如果發(fā)現(xiàn)錯誤,請發(fā)表評論。
杜鵑 1 (又稱陌生人3 )。 這是一種測試方法,它位于同一單元測試中,但實際上并不屬于該單元測試。
按方法測試 1 。 盡管測試和生產(chǎn)類之間的一對一關(guān)系是一個合理的起點,但是測試和生產(chǎn)方法之間的一對一關(guān)系幾乎總是一個壞主意。
肛門探針 2 。 必須使用不健康的方式執(zhí)行其測試的測試,例如使用反射讀取私有字段。
連體雙胞胎 2 。 測試稱為單元測試,但實際上是集成測試,因為被測系統(tǒng)和測試之間沒有隔離。
幸福的道路 (又名對所有賠率3 ,騙子3的成功)。 這些測試始終走在快樂的道路上(即預(yù)期的結(jié)果),而無需測試邊界和異常。
慢戳 3 。 運行非常慢的單元測試。 開發(fā)人員啟動測試時,他們有時間去洗手間,抽煙,或者更糟糕的是,在一天結(jié)束之前回家進行測試。
巨人 3 。 盡管可以有效地測試被測對象,但它可以跨越數(shù)千行并且包含許多測試用例的單元測試。 這可以表明被測系統(tǒng)是上帝對象。
嘲諷 3 。 有時嘲笑會很好并且很方便。 但是有時,開發(fā)人員可能會迷失自己去模仿未經(jīng)測試的內(nèi)容。 在這種情況下,單元測試包含太多的模擬,存根和/或偽造品,以至于根本沒有對被測系統(tǒng)進行測試,而是從模擬返回的數(shù)據(jù)正在被測試。
檢查員 3 。 為了達到100%的代碼覆蓋率而違反封裝的單元測試,但是對對象中發(fā)生的事情了解得非常多,以至于任何重構(gòu)的嘗試都會破壞現(xiàn)有的測試,并要求任何更改都應(yīng)反映在單元測試中。
慷慨的剩菜 3 (又名鏈幫 , 濕地板 )。 一個實例,其中一個單元測試創(chuàng)??建了保留在某處的數(shù)據(jù),而另一個測試出于自己的vious回目的重用了數(shù)據(jù)。 如果“生成器”是隨后運行的,或者根本不運行,則使用該數(shù)據(jù)的測試將完全失敗。
本地英雄 3 (又名“隱藏依賴項”,“操作系統(tǒng)推廣者”,“ 觀望者” ,“ 環(huán)境破壞者” )。 為了運行,該測試用例依賴于特定于其編寫的開發(fā)環(huán)境的東西。 結(jié)果是測試通過了開發(fā)箱,但在有人嘗試在其他地方運行它時失敗。
Nitpicker 3 。 單元測試僅在只對其中的一小部分感興趣時才比較完整的輸出,因此測試必須與其他不重要的細節(jié)保持一致。
秘密守望者 3 。 乍一看,由于沒有斷言,因此似乎沒有進行任何測試,但是正如他們所說,“細節(jié)決定成敗”。 該測試實際上是在發(fā)生事故時依賴于引發(fā)異常,并且期望測試框架捕獲該異常并將其作為故障報告給用戶。
道奇 3 。 單元測試具有許多針對次要(并且可能易于測試)副作用的測試,但從未測試核心所需的行為。 有時,您可能會在與數(shù)據(jù)庫訪問相關(guān)的測試中找到此方法,該測試中調(diào)用了一個方法,然后該測試從數(shù)據(jù)庫中選擇并針對結(jié)果運行斷言。
勞德茅斯 3 。 單元測試(或測試套件),即使通過測試,也會通過診斷消息,日志記錄和其他雜項混亂控制臺。
貪婪的守望者 3 。 捕獲異常并吞沒堆棧跟蹤的單元測試,有時將其替換為信息較少的失敗消息,但有時甚至只是記錄日志(請參閱Loudmouth)并通過測試。
音序器 3 。 單元測試取決于斷言期間以相同順序出現(xiàn)的無序列表中的項目。
枚舉器 3 (又名無名測試 )。 單元測試,其中每個測試用例方法名稱僅是一個枚舉,例如test1 , test2 , test3 。 結(jié)果,測試用例的意圖不明確,唯一可以確定的方法是閱讀測試用例代碼并祈求清晰。
Free Ride 3 (又名Piggyback )。 而不是編寫新的測試案例方法來測試另一個功能,而是在現(xiàn)有測試案例中使用新的斷言。
設(shè)置 3 過多 (又名Hen母親 )。 為了進行測試,需要進行大量工作才能進行的測試。 有時,使用數(shù)百行代碼來設(shè)置一個測試的環(huán)境,其中涉及多個對象,由于所有設(shè)置的“噪音”,因此很難真正確定要測試的內(nèi)容。
線打手 。 乍一看,這些測試涵蓋了所有內(nèi)容,并且代碼覆蓋率工具可以100%確認它,但是實際上,這些測試只是對代碼進行了編碼,而沒有進行任何輸出分析。
四十英尺桿測試 ( 請參閱 )。 由于這些測試過于接近他們要測試的類,因此它們之間的距離很遠,被無數(shù)的抽象層和他們正在檢查的邏輯中的數(shù)千行代碼分隔開。
有用的鏈接:
翻譯自: https://www.javacodegeeks.com/2018/12/unit-testing-anti-patterns-full-list.html
總結(jié)
以上是生活随笔為你收集整理的单元测试反模式,完整列表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 墨雨烟夜作品简介 关于墨雨烟夜作品简介
- 下一篇: amazon云服务_亚马逊Simple