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