• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 當gtest用例失敗時做自己想做的事

    發表于:2012-11-09來源:博客園作者:jovenchen點擊數: 標簽:測試用例
    在使用gtest做單元測試或接口測試時可能會遇到這樣的場景:當某個用例失敗時,需要備份當時的執行場景(如系統時間、一些變量值和組件運行日志等),便于測試完成后對失敗用例進行重現和分析。
    在使用gtest做單元測試或接口測試時可能會遇到這樣的場景:當某個用例失敗時,需要備份當時的執行場景(如系統時間、一些變量值和組件運行日志等),便于測試完成后對失敗用例進行重現和分析。

      首先想到的是在用例中對每個斷言的結果進行判斷,但如果用例中存在比較多斷言或用例很多時,要在每個用例中都增加一堆的if語句,這樣很麻煩,代碼也不美觀。于是研究了下gtest的源碼,發現gtest有提供獲取當前用例信息的接口:

    (1)gtest用例結構

      在使用它的接口之前,首先得理解清楚其用例結構。gtest中有3個與用例結構相關的類:TestCase、TestInfo和Test。

      TestCase并不是指的用例,而且我們平常說的用例集(test suite),而且Test才是我們平常說的用例,所以TestCase是Test的集合;TestInfo是存放用例信息的類,包括用例集名、用例名和執行結果等信息;TestCase中有個TestInfo*的vector,用于保存用例集中每個用例的信息。

    (2)TestInfo和Test的關聯

      Test類中沒有TestInfo的成員,那么它們是怎么關聯起來的呢?通過代碼調試用例的執行過程發現,在所有用例之前會把用例的信息寫進TestInfo*的vector中,而在構造TestInfo對象時,通過一個TestFactoryBase* factory的成員與相應的用例類綁定,執行到某個用例時,再通過相應的CreateTest函數來創建用例對象。

    (3)UniTest::GetInstance()

      UnitTest是個單件,可以通過UniTest::GetInstance()函數獲取單件的實例;

     

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>