下一代CC++测试框架TestNG++入门指导【转】
生活随笔
收集整理的這篇文章主要介紹了
下一代CC++测试框架TestNG++入门指导【转】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文:http://www.cnblogs.com/sinojelly/archive/2010/05/22/1741646.html ? xUnit框架改變了單元測試的歷史,一時間,很多語言的多種單元測試框架蜂涌而至。 發展至今,xUnit已經有很多年的歷史了,炙手可熱的JAVA測試框架JUnit也經歷了JUnit2、JUnit3、JUnit4的發展歷程,后來發展到了TestNG。身為中級語言的C/C++,雖然不具備JAVA語言的很多特性,比如反射,給測試框架開發帶來一定困難,但它也毫不示弱,今年來出現了很多測試框架,比如CppUnit、UnitTest++、CppUTest、gtest、CxxTest等等,不僅如此,與Java世界的TestNG對應,C++世界中也有TestNG++(又稱testngpp),它具備很多優秀的特質,比如: (1)TestNG++支持任意字符作為用例名。gtest借助VC支持Unicode標識符,支持中文用例名,但這種方案存在固有缺陷,gcc是不支持標識符為Unicode字符串的,所以就無法使用這個特性,TestNG++巧妙的使用描述信息來標示用例,真正的用例標識符只是內部自動生成的毫無意義的名字,這使得用例可讀性問題得到了很好的解決,而且這種方案完全是可以跨平臺、跨編譯器的。 (2)TestNG++支持Annotation、Tag等TestNG才具備的特征。 (3)TestNG++支持sandbox用例運行方式,每個用例都在獨立的環境中運行,互不影響。 (4)TestNG++采用加載dll的方式運行用例,可以根據需要只加載需要測試的dll,避免了用例過濾的搜索時間。 (5)TestNG++的用例編寫接口簡單方便,把很多容易混淆的概念進行了巧妙的處理,避免使用者的記憶負擔。比如:setup方法名字,各種不同的測試框架中有不同的定義,gtest中是SetUp,CppUnit中是setUp,TestNG++中把所有測試框架規定的關鍵字全作為宏封裝起來,使用SETUP()宏即可。 (6)TestNG++使用CMake自動生成編譯器對應的Makefile或者工程文件,支持幾乎所有平臺、所有編譯器下的使用。
更多特性請參見:http://code.google.com/p/test-ng-pp/wiki/ChineseUserManual 從技術的角度講,TestNG++與CxxTest類似,也采用了Python解析用例的方法,這是因為C++不支持反射,只能通過解析用例代碼的方法來具備一定的反射能力,這使得使用者必須先安裝Python(目前使用的是Python 2.6版本)。 本文以VC2008為例介紹testngpp的安裝和使用方法。 準備活動 1、下載testngpp 下載地址:http://code.google.com/p/test-ng-pp/ 該網站還有testngpp-msvc.pdf是很好的VC下使用testngpp的介紹文檔,本文也是參考該文檔實踐成功之后所寫。 另外,ChineseUserManual是很好的testngpp特性的介紹文檔。
本文用到的工程類似的測試工程,網上也有下載:
http://code.google.com/p/testngpp-samples/ 2、下載cmake 下載地址:http://www.cmake.org/cmake/resources/software.html 根據自己的需要下載相應的包即可,Windows下可以下載zip壓縮的綠色版本。 3、編譯并安裝testngpp (1)運行CMake中的bin\cmake-gui.exe,設置源代碼路徑為testngpp-1.0根目錄,設置CMake產生的文件放置在build目錄中(build目錄會自動創建)。 (2)點擊Configure。 彈出選擇編譯器的對話框,選擇VC2008。 (3)一段時間之后,配置完成。 我這里存在告警,但不影響使用。 (4)再點擊一次Configure,很快提示配置完成,并且Generate按鈕變得可用。 (5)點擊Generate按鈕,生成sln和vcproj工程。 (6)用VC2008打開testngpp.sln。 (7)按F7編譯解決方案。 (8)在INSTALL上點右鍵,編譯,就可以把testngpp安裝到C:\Program Files\testngpp目錄(該路徑在cmake中可設置)。 在項目中使用testngpp 一、被測工程 1、建立被測工程。 注意: (1)工程類型為靜態庫。 (2)一般可以設置為不使用預編譯頭文件。 2、在被測工程目錄下建立src和include目錄。 源代碼文件放在src目錄中。 頭文件放在include目錄中。 編譯過程中,可能需要搜索include下的頭文件,所以一般要把include目錄加入頭文件搜索路徑。 二、測試工程 1、建立測試工程。 注意: (1)工程類型為動態庫。 (2)創建為空的項目。
2、創建文件AllTests.cpp并加入測試工程。 其內容為:
#include?"Sample1Test.cc" 注:Sample1Test.cc是自動生成的、可編譯運行的用例。 把它包含進AllTests.cpp比直接把它加入工程要好,避免每次自動生成Sample1Test.cc之后,都要重新加載該文件。 3、配置測試工程的頭文件包含路徑。 包括被測工程對外公開頭文件的目錄,以及testngpp頭文件目錄、testngpp使用到的第三方庫boost目錄(主要用了boost的typeof實現)。 4、把testngpp.lib鏈接到測試工程。 配置testngpp.lib所在路徑為庫文件搜索路徑: 5、配置Sample1Test運行時的命令行參數。 命令:C:\Program Files\testngpp\bin\testngpp-runner.exe
參數:$(OutDir)\$(TargetName) -L"C:\Program Files\testngpp\testngpp\listener" -l"testngppstdoutlistener -c -v"
注:參數中第一個是測試工程編譯成的dll文件名;-L表示測試結果listener的dll所在路徑;-l 表示使用哪一種結果輸出的listener。 6、配置測試工程的自定義生成規則,以便根據測試文件(.h)自動生成Sample1Test.cc。 (1)項目上右鍵,選擇“自定義生成規則”。 (2)新建規則文件。 注:如果已經創建過testngpp generator規則,則只需要把它勾上即可。該規則創建一次之后,就可以在任意解決方案中使用,當然需要注意是否能直接使用,可能需要編輯規則中的輸出文件名。 (3)填寫新建規則的名稱、文件名、規則文件存放路徑。然后點擊“添加生成規則”。 (4)生成規則填寫為如下圖所示的樣子。 命令行需要填寫為:python.exe "C:\Program Files\testngpp\testngpp\generator\testngppgen.pyc" -e gb2312 -o Sample1Test.cc [inputs] (5)最后,把TestGenerator勾上即可,它就在測試工程中生效了,編譯的時候就會自動生成Sample1Test.cc 。 7、把被測工程編譯生成的.lib鏈接到測試工程的dll中。 可以簡單的設置Sample1Test依賴Sample1即可。 三、向被測工程添加被測代碼。 這里是把已有的CBar.h等四個文件添加到被測工程。(當然也可以是你想編寫的任何內容) 四、向測試工程添加測試代碼。 測試代碼寫在.h文件中,參見下圖。 五、編譯運行。 按F7編譯整個解決方案,然后再按Ctrl+F5即可運行用例。
更多特性請參見:http://code.google.com/p/test-ng-pp/wiki/ChineseUserManual 從技術的角度講,TestNG++與CxxTest類似,也采用了Python解析用例的方法,這是因為C++不支持反射,只能通過解析用例代碼的方法來具備一定的反射能力,這使得使用者必須先安裝Python(目前使用的是Python 2.6版本)。 本文以VC2008為例介紹testngpp的安裝和使用方法。 準備活動 1、下載testngpp 下載地址:http://code.google.com/p/test-ng-pp/ 該網站還有testngpp-msvc.pdf是很好的VC下使用testngpp的介紹文檔,本文也是參考該文檔實踐成功之后所寫。 另外,ChineseUserManual是很好的testngpp特性的介紹文檔。
本文用到的工程類似的測試工程,網上也有下載:
http://code.google.com/p/testngpp-samples/ 2、下載cmake 下載地址:http://www.cmake.org/cmake/resources/software.html 根據自己的需要下載相應的包即可,Windows下可以下載zip壓縮的綠色版本。 3、編譯并安裝testngpp (1)運行CMake中的bin\cmake-gui.exe,設置源代碼路徑為testngpp-1.0根目錄,設置CMake產生的文件放置在build目錄中(build目錄會自動創建)。 (2)點擊Configure。 彈出選擇編譯器的對話框,選擇VC2008。 (3)一段時間之后,配置完成。 我這里存在告警,但不影響使用。 (4)再點擊一次Configure,很快提示配置完成,并且Generate按鈕變得可用。 (5)點擊Generate按鈕,生成sln和vcproj工程。 (6)用VC2008打開testngpp.sln。 (7)按F7編譯解決方案。 (8)在INSTALL上點右鍵,編譯,就可以把testngpp安裝到C:\Program Files\testngpp目錄(該路徑在cmake中可設置)。 在項目中使用testngpp 一、被測工程 1、建立被測工程。 注意: (1)工程類型為靜態庫。 (2)一般可以設置為不使用預編譯頭文件。 2、在被測工程目錄下建立src和include目錄。 源代碼文件放在src目錄中。 頭文件放在include目錄中。 編譯過程中,可能需要搜索include下的頭文件,所以一般要把include目錄加入頭文件搜索路徑。 二、測試工程 1、建立測試工程。 注意: (1)工程類型為動態庫。 (2)創建為空的項目。
2、創建文件AllTests.cpp并加入測試工程。 其內容為:
#include?"Sample1Test.cc" 注:Sample1Test.cc是自動生成的、可編譯運行的用例。 把它包含進AllTests.cpp比直接把它加入工程要好,避免每次自動生成Sample1Test.cc之后,都要重新加載該文件。 3、配置測試工程的頭文件包含路徑。 包括被測工程對外公開頭文件的目錄,以及testngpp頭文件目錄、testngpp使用到的第三方庫boost目錄(主要用了boost的typeof實現)。 4、把testngpp.lib鏈接到測試工程。 配置testngpp.lib所在路徑為庫文件搜索路徑: 5、配置Sample1Test運行時的命令行參數。 命令:C:\Program Files\testngpp\bin\testngpp-runner.exe
參數:$(OutDir)\$(TargetName) -L"C:\Program Files\testngpp\testngpp\listener" -l"testngppstdoutlistener -c -v"
注:參數中第一個是測試工程編譯成的dll文件名;-L表示測試結果listener的dll所在路徑;-l 表示使用哪一種結果輸出的listener。 6、配置測試工程的自定義生成規則,以便根據測試文件(.h)自動生成Sample1Test.cc。 (1)項目上右鍵,選擇“自定義生成規則”。 (2)新建規則文件。 注:如果已經創建過testngpp generator規則,則只需要把它勾上即可。該規則創建一次之后,就可以在任意解決方案中使用,當然需要注意是否能直接使用,可能需要編輯規則中的輸出文件名。 (3)填寫新建規則的名稱、文件名、規則文件存放路徑。然后點擊“添加生成規則”。 (4)生成規則填寫為如下圖所示的樣子。 命令行需要填寫為:python.exe "C:\Program Files\testngpp\testngpp\generator\testngppgen.pyc" -e gb2312 -o Sample1Test.cc [inputs] (5)最后,把TestGenerator勾上即可,它就在測試工程中生效了,編譯的時候就會自動生成Sample1Test.cc 。 7、把被測工程編譯生成的.lib鏈接到測試工程的dll中。 可以簡單的設置Sample1Test依賴Sample1即可。 三、向被測工程添加被測代碼。 這里是把已有的CBar.h等四個文件添加到被測工程。(當然也可以是你想編寫的任何內容) 四、向測試工程添加測試代碼。 測試代碼寫在.h文件中,參見下圖。 五、編譯運行。 按F7編譯整個解決方案,然后再按Ctrl+F5即可運行用例。
轉載于:https://www.cnblogs.com/Leo-Forest/archive/2013/04/19/3030431.html
總結
以上是生活随笔為你收集整理的下一代CC++测试框架TestNG++入门指导【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于反射的我的一些看法
- 下一篇: 老陈学 C++ 序列之二: 友元函数