gtest 测试部分_全部关于测试–第2部分
gtest 測試部分
 這是有關(guān)測試的系列文章的第二篇。 在第一部分中,我解釋了在開發(fā)測試時需要具備的心態(tài)。 或者,換句話說,開發(fā)可測試的代碼。 在這一部分中,我將介紹一些測試方法的技術(shù)。 我將描述的技術(shù)可以看作是如何將思維定勢轉(zhuǎn)化為行動。 
技巧
測試類型
測試的類型是我們測試的層次 。 最明顯的一個是單元測試 。 使用JUnit(或TestNG或任何其他工具),您將測試代碼的行為。 每個測試都應(yīng)檢查被測類/方法的一種行為。 我通常稱集成測試為另一層測試,通常由開發(fā)人員完成。 這種測試通常是代碼的一部分(在測試目錄下)。 集成測試可以一起測試多個類。 他們可能會測試部分流量。
我喜歡測試Spring接線,請驗證上下文文件是否正確。 例如,如果我注入了bean列表,則順序很重要。 測試接線可以視為集成測試。 另一個示例是檢查DAO類和使用它的類的集成。 有時在這些部分中存在“意外”。 作為更高級別的測試,您將需要測試請求和響應(yīng)(REST)。 如果您具有GUI,則也要為此創(chuàng)建一個自動化測試服。
自動化
自動執(zhí)行整個開發(fā)周期。 使用CI服務(wù),例如Hudson / Jenkins。 將您的JUnit,Selenium,JMeter,JBehave添加到您的CI環(huán)境中。
我建議以下內(nèi)容:
每晚會變慢。 如果您進行連續(xù)部署,則您的設(shè)置可能會有所不同。
環(huán)境
有專用的測試環(huán)境。 可以清除并重新填充的數(shù)據(jù)庫。 如果您使用REST服務(wù),請為您的測試和自動化環(huán)境配備一臺服務(wù)器。 如果可以,請嘗試使其與生產(chǎn)環(huán)境盡可能相似。
存根,模擬
有用于存根和模擬的框架。 但是首先要了解它的含義。 存根和嘲笑之間略有不同。 基本上,它們都偽造了一個真實的對象(或接口)。 您可以告訴偽造對象在某些輸入中表現(xiàn)出所需的行為。 您還可以驗證是否使用預(yù)期參數(shù)調(diào)用了它(在下一篇文章中有更多關(guān)于它的信息)。
外部資源的使用
您可以偽造數(shù)據(jù)庫,也可以使用某種嵌入式數(shù)據(jù)庫。 嵌入式數(shù)據(jù)庫可幫助您隔離包括數(shù)據(jù)庫的測試。 外部服務(wù)也是如此。
描述性測試
-  添加message參數(shù)。 assertTrue("Cache pairs is not size 2", cachPairs.size() == 2);它至少具有兩個好處: 
- 該測試更具可讀性
- 失敗時,該消息更清晰
- 用描述性名稱測試。 不要害怕具有(非常)長名稱的測試方法。 當(dāng)測試失敗時,它確實有幫助。 不要將測試命名為: public void testFlow(){...} 。 沒什么意思
- 有命名約定。 我喜歡命名測試: public void whenSomeInput_ThenSomeOutput() {...} 。 但是,無論您要為測試命名如何,都應(yīng)遵循所有測試的約定。
您有多少次因為沒有消息而無法分辨出問題所在? 測試失敗是assertTrue(something) ,沒有message參數(shù)。
測試結(jié)構(gòu)
嘗試遵循: 給定,何時,然后順序。 給定的部分是您創(chuàng)建測試環(huán)境(創(chuàng)建嵌入式DB,設(shè)置某些值等)的部分。 這也是告訴模擬對象(如何在下一篇文章中了解更多)行為的部分。 什么時候是運行測試代碼的部分。 然后在這里使用斷言檢查結(jié)果。 這是驗證方法是否被調(diào)用的部分。 或不。 如果很難保持有序的結(jié)構(gòu),則可以將其視為測試氣味 (請參閱上一篇文章)。
單元測試應(yīng)快速運行
班級的單元測試應(yīng)運行1-5秒。 不多。 無論是否失敗,您都需要最快的反饋。 您還將希望盡可能多地運行單元測試。 如果一個班級的測試大約需要30-60秒,那么通常我們不會運行它。 在您的所有項目上運行一個完整的測試服應(yīng)該不超過幾分鐘(超過5分鐘太多了)。
覆蓋范圍
測試應(yīng)涵蓋您所有的生產(chǎn)代碼。 覆蓋率有助于發(fā)現(xiàn)未經(jīng)測試的現(xiàn)貨代碼。 如果由于某些代碼分支(如果不執(zhí)行其他操作)而難以覆蓋某些代碼,那么您仍然會有測試的味道。 如果您練習(xí)TDD ,那么您會自動獲得很高的覆蓋率。
重要:不要將代碼覆蓋范圍作為目標(biāo)。 代碼覆蓋率是一種工具。 用它。
TDD
請允許我不要在此處添加任何內(nèi)容...
結(jié)論
在這篇文章中,我給出了關(guān)于如何通過測試進行開發(fā)的更多方法,更具體。 在下面的文章中,我將提供一些有關(guān)如何使用可用工具的指示和技巧。
翻譯自: https://www.javacodegeeks.com/2014/11/its-all-about-tests-part-2.html
gtest 測試部分
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的gtest 测试部分_全部关于测试–第2部分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: jaxb_JAXB众所周知的秘密
- 下一篇: 电脑最高配置多少?
