1 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
可以用main函數(shù)和JUnit來(lái)寫(xiě)測(cè)試代碼。main是最早使用的,但是現(xiàn)在更流行的測(cè)試工具是JUnit。
JUnit是一個(gè)Java語(yǔ)言的單元測(cè)試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個(gè)。 JUnit有它自己的JUnit擴(kuò)展生態(tài)圈。多數(shù)Java的開(kāi)發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測(cè)試的工具。
下面是一些具體的編寫(xiě)測(cè)試代碼的技巧或較好的實(shí)踐方法:
1. 不要用TestCase的構(gòu)造函數(shù)初始化Fixture,而要用setUp()和tearDown()方法。
2. 不要依賴(lài)或假定測(cè)試運(yùn)行的順序,因?yàn)镴Unit利用Vector保存測(cè)試方法。所以不同的平臺(tái)會(huì)按不同的順序從Vector中取出測(cè)試方法。
3. 避免編寫(xiě)有副作用的TestCase。例如:如果隨后的測(cè)試依賴(lài)于某些特定的交易數(shù)據(jù),就不要提交交易數(shù)據(jù)。簡(jiǎn)單的回滾就可以了。
4. 當(dāng)繼承一個(gè)測(cè)試類(lèi)時(shí),記得調(diào)用父類(lèi)的setUp()和tearDown()方法。
5. 將測(cè)試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)
6. 測(cè)試類(lèi)和測(cè)試方法應(yīng)該有一致的命名方案。如在工作類(lèi)名前加上test從而形成測(cè)試類(lèi)名。
7. 確保測(cè)試與時(shí)間無(wú)關(guān),不要依賴(lài)使用過(guò)期的數(shù)據(jù)進(jìn)行測(cè)試。導(dǎo)致在隨后的維護(hù)過(guò)程中很難重現(xiàn)測(cè)試。
8. 如果你編寫(xiě)的軟件面向國(guó)際市場(chǎng),編寫(xiě)測(cè)試時(shí)要考慮國(guó)際化的因素。不要僅用母語(yǔ)的Locale進(jìn)行測(cè)試。
9. 盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡(jiǎn)潔。
10.測(cè)試要盡可能地小,執(zhí)行速度快。
11.不要硬性規(guī)定數(shù)據(jù)文件的路徑。
12.利用Junit 的自動(dòng)異常處理書(shū)寫(xiě)簡(jiǎn)潔的測(cè)試代碼
事實(shí)上在Junit 中使用try-catch 來(lái)捕獲異常是沒(méi)有必要的,Junit 會(huì)自動(dòng)捕獲異常。那些沒(méi)有被捕獲的異常就被當(dāng)成錯(cuò)誤處理。
13. 充分利用Junit 的assert/fail 方法
assertSame()用來(lái)測(cè)試兩個(gè)引用是否指向同一個(gè)對(duì)象
assertEquals()用來(lái)測(cè)試兩個(gè)對(duì)象是否相等
14. 確保測(cè)試代碼與時(shí)間無(wú)關(guān)
15. 使用文檔生成器做測(cè)試文檔。
添加回答
舉報(bào)