日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gtest 测试部分_全部关于测试–第2部分

發布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gtest 测试部分_全部关于测试–第2部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gtest 測試部分

這是有關測試的系列文章的第二篇。 在第一部分中,我解釋了在開發測試時需要具備的心態。 或者,換句話說,開發可測試的代碼。 在這一部分中,我將介紹一些測試方法的技術。 我將描述的技術可以看作是如何將思維定勢轉化為行動。

技巧

測試類型

測試的類型是我們測試的層次 。 最明顯的一個是單元測試 。 使用JUnit(或TestNG或任何其他工具),您將測試代碼的行為。 每個測試都應檢查被測類/方法的一種行為。 我通常稱集成測試為另一層測試,通常由開發人員完成。 這種測試通常是代碼的一部分(在測試目錄下)。 集成測試可以一起測試多個類。 他們可能會測試部分流量。

我喜歡測試Spring接線,請驗證上下文文件是否正確。 例如,如果我注入了bean列表,則順序很重要。 測試接線可以視為集成測試。 另一個示例是檢查DAO類和使用它的類的集成。 有時在這些部分中存在“意外”。 作為更高級別的測試,您將需要測試請求和響應(REST)。 如果您具有GUI,則也要為此創建一個自動化測試服。

自動化

自動執行整個開發周期。 使用CI服務,例如Hudson / Jenkins。 將您的JUnit,Selenium,JMeter,JBehave添加到您的CI環境中。

我建議以下內容:

  • CI,用于檢查SCM的更改并在發生更改時運行。
  • 每晚(或每隔幾個小時)。 較慢的自動化測試服,可以檢查更多內容,例如集成測試。
  • 每晚會變慢。 如果您進行連續部署,則您的設置可能會有所不同。

    環境

    有專用的測試環境。 可以清除并重新填充的數據庫。 如果您使用REST服務,請為您的測試和自動化環境配備一臺服務器。 如果可以,請嘗試使其與生產環境盡可能相似。

    存根,模擬

    有用于存根和模擬的框架。 但是首先要了解它的含義。 存根和嘲笑之間略有不同。 基本上,它們都偽造了一個真實的對象(或接口)。 您可以告訴偽造對象在某些輸入中表現出所需的行為。 您還可以驗證是否使用預期參數調用了它(在下一篇文章中有更多關于它的信息)。

    外部資源的使用

    您可以偽造數據庫,也可以使用某種嵌入式數據庫。 嵌入式數據庫可幫助您隔離包括數據庫的測試。 外部服務也是如此。

    描述性測試

    • 添加message參數。 assertTrue("Cache pairs is not size 2", cachPairs.size() == 2);

      它至少具有兩個好處:

    • 該測試更具可讀性
    • 失敗時,該消息更清晰
    • 您有多少次因為沒有消息而無法分辨出問題所在? 測試失敗是assertTrue(something) ,沒有message參數。

    • 用描述性名稱測試。 不要害怕具有(非常)長名稱的測試方法。 當測試失敗時,它確實有幫助。 不要將測試命名為: public void testFlow(){...} 。 沒什么意思
    • 有命名約定。 我喜歡命名測試: public void whenSomeInput_ThenSomeOutput() {...} 。 但是,無論您要為測試命名如何,都應遵循所有測試的約定。

    測試結構

    嘗試遵循: 給定,何時,然后順序。 給定的部分是您創建測試環境(創建嵌入式DB,設置某些值等)的部分。 這也是告訴模擬對象(如何在下一篇文章中了解更多)行為的部分。 什么時候是運行測試代碼的部分。 然后在這里使用斷言檢查結果。 這是驗證方法是否被調用的部分。 或不。 如果很難保持有序的結構,則可以將其視為測試氣味 (請參閱上一篇文章)。

    單元測試應快速運行

    班級的單元測試應運行1-5秒。 不多。 無論是否失敗,您都需要最快的反饋。 您還將希望盡可能多地運行單元測試。 如果一個班級的測試大約需要30-60秒,那么通常我們不會運行它。 在您的所有項目上運行一個完整的測試服應該不超過幾分鐘(超過5分鐘太多了)。

    覆蓋范圍

    測試應涵蓋您所有的生產代碼。 覆蓋率有助于發現未經測試的現貨代碼。 如果由于某些代碼分支(如果不執行其他操作)而難以覆蓋某些代碼,那么您仍然會有測試的味道。 如果您練習TDD ,那么您會自動獲得很高的覆蓋率。

    重要:不要將代碼覆蓋范圍作為目標。 代碼覆蓋率是一種工具。 用它。

    TDD

    請允許我不要在此處添加任何內容...

    結論

    在這篇文章中,我給出了關于如何通過測試進行開發的更多方法,更具體。 在下面的文章中,我將提供一些有關如何使用可用工具的指示和技巧。

    翻譯自: https://www.javacodegeeks.com/2014/11/its-all-about-tests-part-2.html

    gtest 測試部分

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的gtest 测试部分_全部关于测试–第2部分的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。