首先,C++單元測試工具的鼻祖CppUnit是壹個免費開源的單元測試框架。因為很多專家寫了很多關於CppUnit的好文章,老納現在也不醜了。如果妳想了解CppUnit,我建議看壹下Cpluser的《CppUnit測試框架介紹》。文章還提供了CppUnit的下載地址。
c++測試
然後介紹C++Test,這是Parasoft的壹個產品。C++test是壹款功能強大的自動化C/C++單元級測試工具,可以自動測試任何C/C++函數和類,自動生成測試用例、測試驅動函數或存根函數,在自動化環境下非常容易、快速地使單元級測試覆蓋率達到100%。【】中的文字引自,是華堂公司的網站。老納想寫壹些關於c++測試的文字,但是發現在華堂公司的網站上無法超越介紹,於是省去了壹些麻煩。想了解c++測試的朋友建議去公司網站看看。c++測試是華堂公司代理的。如果妳想購買或要求報價和試用版,妳可以聯系他們。
視覺單位
最後介紹了國內單元測試工具Visual Unit。據說申請了很多專利,有多項創新技術,但老納只關心是否有用,是否好用。測試代碼自動生成,功能測試用例快速建立,程序行為清晰,測試完整性高,高效完成白盒覆蓋,快速調試高效調試,測試報告詳細。[]中的文字摘自VU開發商網站。上面提到的測試需求:完成功能測試,完整的語句覆蓋,條件覆蓋,分支覆蓋,路徑覆蓋,使用VU就可以輕松實現。另外值得壹提的是,使用VU還可以提高編碼效率。壹般來說,在完成單元測試的同時,編碼調試的時間可以大大縮短。算了,我不想再談了。我還是有興趣炫耀我的理論,介紹我的經驗,因為可以滿足我當好老師的虛榮心,但是工具的介紹就沒意思了。畢竟工具好不好,要我試了才知道。我最好自己去開發者網站看看,可以下載演示版和演示課件。
gtest
Gtest測試框架是為在不同平臺(Linux、Mac OS X、Windows、Cygwin、Windows CE和Symbian)上編寫C++測試而生成的。它是壹個基於xUnit架構的測試框架,支持自動發現測試、豐富的斷言集、用戶自定義斷言、死亡測試、致命和非致命故障、類型參數化測試、運行測試的多種選項和XML測試報告。需要了解更多的朋友可以參考《玩轉Google單元測試框架gtest系列》壹文。朱尼特
JUnit是Java社區中最著名的單元測試工具。它誕生於1997,由埃裏希·伽馬和肯特·貝克開發。其中,Erich Gamma是經典著作《設計模式:可重用面向對象軟件基礎》的作者之壹,在Eclipse方面做出了巨大貢獻。Kent Beck是極限編程(XP)的專家和先驅。JUnit設計的很小,但是功能很強大。JUnit——開發源代碼的Java測試框架,用於編寫和運行可重復的測試。這是壹個用於xUnit測試(java語言)的框架系統的例子。主要用於白盒測試和回歸測試。
JUnit的好處和編寫JUnit單元測試的原則;
優點:測試代碼可以與產品代碼分離;壹個類的測試代碼可以應用到另壹個類的測試中,只需很少的修改;很容易集成到測試人員的構建過程中,JUnit和Ant的結合可以實現增量開發。JUnit是開源代碼,可以重新開發。JUnit很容易擴展;
編寫原則:簡化測試的編寫,包括測試框架的學習和實際測試單元的編寫;是保持測試單元的持久性;可以使用現有的測試來編寫相關的測試;
JUnit使用幫助。
版本1和junit3.x,我們壹般用junit 3.8。
(1),使用junit3.x版本3.x進行單元測試時,測試類必須從TestCase父類繼承;
(2)試驗方法應遵循的原則:
壹、公共
b,無效
c,沒有方法參數
方法名必須以test開頭。
(3)不同的測試用例必須是完全獨立的,並且不能有任何關聯。
(4)、要掌握測試方法的順序,不能依賴測試方法的執行順序。
圓頂:
公共類TestMyNumber擴展了TestCase {
私人MyNumber myNumber
public TestMyNumber(字符串名稱){
超級(名);
}
//它會在每個測試方法執行之前被調用。
@覆蓋
公共void設置()引發異常{
// System.out.println(歡迎使用Junit進行單元測試……);
my number = new my number();
}
//每個測試方法執行後,都會被調用。
@覆蓋
public void tearDown()引發異常{
// System.out.println(Junit單元測試結束…);
}
public void testDivideByZero() {
Throwable te = null
嘗試{
myNumber.divide(6,0);
Assert.fail(測試失敗);
} catch(異常e) {
e . printstacktrace();
te = e;
}
assert . assert equals(exception . class,te . getclass());
Assert.assertEquals(除數不能為0,te . getmessage());
}
}
2.junit4.x版本
(1),使用JUnit 4 . x版進行單元測試時,我們不需要test類繼承TestCase父類,因為JUnit 4 . x版完全引入了Annotation來執行我們編寫的測試。
(2)、junit4.x版本,引用註釋的方式,進行單元測試;
(3)、junit4.x版我們常用的註釋:
A.@Before註意:和junit3.x中setUp()方法的功能壹樣,在每個測試方法之前執行;
b、@After註意:和junit3.x中的tearDown()方法函數壹樣,在每個測試方法之後執行;
C.@BeforeClass註意:在所有方法執行之前執行;
d,@AfterClass註意:是在所有方法執行完之後執行;
e、@Test(timeout = xxx)註意:設置當前測試方法在壹定時間內運行,否則返回錯誤;
f,@Test(expected = Exception.class)註意:設置被測試的方法是否有異常拋出。拋出的異常類型為:Exception.class;
g,@Ignore comment:註釋掉壹個測試方法或類,被註釋的方法或類將不被執行。
圓頂:
包com . an . JUnit;
導入靜態org . JUnit . assert . *;
導入org . JUnit . after;
導入org . JUnit . after class;
導入org . JUnit . before;
導入org . JUnit . before class;
導入org . JUnit . test;
公共類TestMyNumber {
私人MyNumber myNumber
@BeforeClass
//在所有方法執行之前執行。
公共靜態void globalInit() {
System.out.println(init all方法...);
}
@課後
//執行完所有方法後執行。
public static void global destory(){
System.out.println(destory all方法...);
}
@以前
//在每個測試方法之前執行
公共void設置(){
System.out.println(啟動設置方法);
my number = new my number();
}
@之後
//在每個測試方法之後執行
公共void拆卸(){
System.out.println(end tearDown方法);
}
@Test(timeout=600)//設置受限測試方法的運行時間,超過則返回錯誤。
公共void testAdd() {
System.out.println(testAdd方法);
int result = myNumber.add(2,3);
assertEquals(5,結果);
}
@測試
public void testSubtract() {
system . out . println(test subtract方法);
int result = my number . subtract(1,2);
assertEquals(-1,結果);
}
@測試
public void testMultiply() {
system . out . println(test multiply方法);
int result = myNumber.multiply(2,3);
assertEquals(6,結果);
}
@測試
public void testDivide() {
System.out.println(testDivide方法);
int result = 0;
嘗試{
result = myNumber.divide(6,2);
} catch(異常e) {
fail();
}
assertEquals(3,結果);
}
@Test(預期= Exception.class)
public void testDivide2()引發異常{
System.out.println(testDivide2方法);
myNumber.divide(6,0);
失敗(測試錯誤);
}
公共靜態void main(String[] args) {
}
}
有興趣的朋友可以下來仔細研究壹下,或者去安安的DIY工坊博客壹起討論。
JUnit-addons
對JUnit的壹些補充,比如設置,獲取被測對象的私有屬性值,調用被測對象的私有方法等。
公共類:junitx.util.PrivateAccessor
Spring測試框架
您可以基於Spring測試應用程序,並通過配置文件和註釋自動組裝所需的單元測試對象。
提供了壹些常用的J2EE模擬對象,比如HttpSession的模擬類。
可以支持自動數據庫回滾,以防止單元測試(插入、刪除等。)被重復,並防止數據庫狀態被修改。
朱尼特
模擬對象是由代碼自動生成的,這使您不必手動編寫n個以上的模擬類。
此外,它的Eclipse插件還可以測試覆蓋率和分支統計。
EasyMock
功能和DJUnit壹樣,也是通過編程自動模擬出與測試對象無關的類和方法。