在軟件開發(fā)過程中,每個(gè)單元的運(yùn)行都是非常關(guān)鍵的,并且直接關(guān)系到后期程序員的運(yùn)行。那么在進(jìn)行軟件開發(fā)過程中,經(jīng)常使用到的單元測試方法有哪些呢,一個(gè)好的單元測試是如何進(jìn)行實(shí)現(xiàn)的?下面云南電腦培訓(xùn)為大家介紹進(jìn)行Java單元測試的具體方法。
創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信平臺小程序開發(fā),十多年建站對成都會所設(shè)計(jì)等多個(gè)領(lǐng)域,擁有豐富的網(wǎng)站推廣經(jīng)驗(yàn)。
1、使用框架進(jìn)行單元測試
Java能夠提供單元測試方法的框架,在測試過程中,測試NG和JUnit是現(xiàn)在流行的測試框架。JUnit和TestNG框架測試有幾個(gè)重要功能:設(shè)置和運(yùn)行很容易;允許忽略或分組,并一起運(yùn)行多個(gè)測試;支持參數(shù)化測試,并且云南IT培訓(xùn)發(fā)現(xiàn)能夠通過在運(yùn)行時(shí)指定不同的值來執(zhí)行單元測試。
2、謹(jǐn)慎使用測試驅(qū)動開發(fā)
測試驅(qū)動開發(fā)是一個(gè)軟件開發(fā)的過程。在整個(gè)開發(fā)過程中,在開始編碼的時(shí)候,應(yīng)該根據(jù)程序的需求進(jìn)行編程測試。但是昆明IT培訓(xùn)發(fā)現(xiàn)由于這個(gè)時(shí)候還沒有進(jìn)行編程,所以初次測試會面臨失敗,只需要寫入少量的代碼就能通過測試,進(jìn)行重置代碼。
3、測試代碼的覆蓋率
代碼覆蓋率是以百分比測定執(zhí)行單元測試時(shí)進(jìn)行的代碼量。通常,高覆蓋率的代碼包含未被檢測出的錯(cuò)誤的概率較低,因?yàn)楦嗟脑创a在測試中被執(zhí)行。測試代碼覆蓋率的工具有:Clover,Corbetura,JaCoCo。使用工具測試能夠更好的提高測試質(zhì)量。
4、將測試數(shù)據(jù)外部優(yōu)化
在JUnit4之前,測試用例執(zhí)行的數(shù)據(jù)必須被測試用例硬編碼,這會引起限制。為了使用不同的數(shù)據(jù)執(zhí)行測試,必須修正測試用例代碼。但是,昆明電腦培訓(xùn)認(rèn)為JUnit4以及TestNG支持外部化測試數(shù)據(jù),無需變更源代碼,就可以對不同的數(shù)據(jù)組執(zhí)行測試用例。
可以用main函數(shù)和JUnit來寫測試代碼。main是最早使用的,但是現(xiàn)在更流行的測試工具是JUnit。
JUnit是一個(gè)Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個(gè)。 JUnit有它自己的JUnit擴(kuò)展生態(tài)圈。多數(shù)Java的開發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測試的工具。
下面是一些具體的編寫測試代碼的技巧或較好的實(shí)踐方法:
1. 不要用TestCase的構(gòu)造函數(shù)初始化Fixture,而要用setUp()和tearDown()方法。
2. 不要依賴或假定測試運(yùn)行的順序,因?yàn)镴Unit利用Vector保存測試方法。所以不同的平臺會按不同的順序從Vector中取出測試方法。
3. 避免編寫有副作用的TestCase。例如:如果隨后的測試依賴于某些特定的交易數(shù)據(jù),就不要提交交易數(shù)據(jù)。簡單的回滾就可以了。
4. 當(dāng)繼承一個(gè)測試類時(shí),記得調(diào)用父類的setUp()和tearDown()方法。
5. 將測試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)
6. 測試類和測試方法應(yīng)該有一致的命名方案。如在工作類名前加上test從而形成測試類名。
7. 確保測試與時(shí)間無關(guān),不要依賴使用過期的數(shù)據(jù)進(jìn)行測試。導(dǎo)致在隨后的維護(hù)過程中很難重現(xiàn)測試。
8. 如果你編寫的軟件面向國際市場,編寫測試時(shí)要考慮國際化的因素。不要僅用母語的Locale進(jìn)行測試。
9. 盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡潔。
10.測試要盡可能地小,執(zhí)行速度快。
11.不要硬性規(guī)定數(shù)據(jù)文件的路徑。
12.利用Junit 的自動異常處理書寫簡潔的測試代碼
事實(shí)上在Junit 中使用try-catch 來捕獲異常是沒有必要的,Junit 會自動捕獲異常。那些沒有被捕獲的異常就被當(dāng)成錯(cuò)誤處理。
13. 充分利用Junit 的assert/fail 方法
assertSame()用來測試兩個(gè)引用是否指向同一個(gè)對象
assertEquals()用來測試兩個(gè)對象是否相等
14. 確保測試代碼與時(shí)間無關(guān)
15. 使用文檔生成器做測試文檔。
你這說的太籠統(tǒng)了,應(yīng)該具體些。
有了Java代碼之后
1、可以在代碼中寫些測試的方法,把你想要驗(yàn)證的東西,輸出看一下。
2、可以用Debug的形式,跟蹤代碼執(zhí)行,驗(yàn)證程序的邏輯是否正確。
3、利用JUnit寫斷言,測試結(jié)果