可以用main函數(shù)和JUnit來寫測(cè)試代碼。main是最早使用的,但是現(xiàn)在更流行的測(cè)試工具是JUnit。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、磐石網(wǎng)絡(luò)推廣、成都微信小程序、磐石網(wǎng)絡(luò)營(yíng)銷、磐石企業(yè)策劃、磐石品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供磐石建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn
JUnit是一個(gè)Java語(yǔ)言的單元測(cè)試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個(gè)。 JUnit有它自己的JUnit擴(kuò)展生態(tài)圈。多數(shù)Java的開發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測(cè)試的工具。
下面是一些具體的編寫測(cè)試代碼的技巧或較好的實(shí)踐方法:
1. 不要用TestCase的構(gòu)造函數(shù)初始化Fixture,而要用setUp()和tearDown()方法。
2. 不要依賴或假定測(cè)試運(yùn)行的順序,因?yàn)镴Unit利用Vector保存測(cè)試方法。所以不同的平臺(tái)會(huì)按不同的順序從Vector中取出測(cè)試方法。
3. 避免編寫有副作用的TestCase。例如:如果隨后的測(cè)試依賴于某些特定的交易數(shù)據(jù),就不要提交交易數(shù)據(jù)。簡(jiǎn)單的回滾就可以了。
4. 當(dāng)繼承一個(gè)測(cè)試類時(shí),記得調(diào)用父類的setUp()和tearDown()方法。
5. 將測(cè)試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)
6. 測(cè)試類和測(cè)試方法應(yīng)該有一致的命名方案。如在工作類名前加上test從而形成測(cè)試類名。
7. 確保測(cè)試與時(shí)間無關(guān),不要依賴使用過期的數(shù)據(jù)進(jìn)行測(cè)試。導(dǎo)致在隨后的維護(hù)過程中很難重現(xiàn)測(cè)試。
8. 如果你編寫的軟件面向國(guó)際市場(chǎng),編寫測(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)異常處理書寫簡(jiǎn)潔的測(cè)試代碼
事實(shí)上在Junit 中使用try-catch 來捕獲異常是沒有必要的,Junit 會(huì)自動(dòng)捕獲異常。那些沒有被捕獲的異常就被當(dāng)成錯(cuò)誤處理。
13. 充分利用Junit 的assert/fail 方法
assertSame()用來測(cè)試兩個(gè)引用是否指向同一個(gè)對(duì)象
assertEquals()用來測(cè)試兩個(gè)對(duì)象是否相等
14. 確保測(cè)試代碼與時(shí)間無關(guān)
15. 使用文檔生成器做測(cè)試文檔。
單元測(cè)試使用工具與不使用工具的區(qū)別是自動(dòng)和手動(dòng)。我使用單元測(cè)試的工具是jtest。
拓展知識(shí):
jtest是parasoft公司推出的一款針對(duì)java語(yǔ)言的自動(dòng)化白盒測(cè)試工具,它通過自動(dòng)實(shí)現(xiàn)java的單元測(cè)試和代碼標(biāo)準(zhǔn)校驗(yàn),來提高代碼的可靠性。Jtest先分析每個(gè)java類,然后自動(dòng)生成junit測(cè)試用例并執(zhí)行用例,從而實(shí)現(xiàn)代碼的最大覆蓋,并將代碼運(yùn)行時(shí)未處理的異常暴露出來;另外,它還可以檢查以DbC(Design by Contract)規(guī)范開發(fā)的代碼的正確性。用戶還可以通過擴(kuò)展測(cè)試用例的自動(dòng)生成器來添加更多的junit用例。Jtest還能按照現(xiàn)有的超過350個(gè)編碼標(biāo)準(zhǔn)來檢查并自動(dòng)糾正大多數(shù)常見的編碼規(guī)則上的偏差,用戶可自定義這些標(biāo)準(zhǔn),通過簡(jiǎn)單的幾個(gè)點(diǎn)擊,就能預(yù)防類似于未處理異常、函數(shù)錯(cuò)誤、內(nèi)存泄漏、性能問題、安全隱患這樣的代碼問題。
在Eclipse中自動(dòng)生成接口和JUnit測(cè)試類的方法:
1、首先新建一個(gè)項(xiàng)目叫JUnit_Test,以編寫一個(gè)Calculator類為例來說明,這是一個(gè)能夠簡(jiǎn)單實(shí)現(xiàn)加減乘除、平方、開方的計(jì)算器類,然后對(duì)這些功能進(jìn)行單元測(cè)試。
package?andycpp;
public?class?Calculator?{
private?static?int?result;?//?靜態(tài)變量,用于存儲(chǔ)運(yùn)行結(jié)果
public?void?add(int?n)?{
result?=?result?+?n;
}
public?void?substract(int?n)?{
result?=?result?-?1;??//Bug:?正確的應(yīng)該是?result =result-n
}
public?void?multiply(int?n)?{
}?????????//?此方法尚未寫好
public?void?divide(int?n)?{
result?=?result?/?n;
}
public?void?square(int?n)?{
result?=?n?*?n;
}
public?void?squareRoot(int?n)?{
for?(;?;)?;????????????//Bug?:?死循環(huán)
}
public?void?clear()?{?????//?將結(jié)果清零
result?=?0;
}
public?int?getResult()?{
return?result;
}
}
2、將JUnit4單元測(cè)試包引入這個(gè)項(xiàng)目:在該項(xiàng)目上點(diǎn)右鍵,點(diǎn)“屬性”,如圖:
3、在彈出的屬性窗口中,首先在左邊選擇“Java Build Path”,然后到右上選擇“Libraries”標(biāo)簽,之后在最右邊點(diǎn)擊“Add Library…”按鈕,如下圖所示:
在新彈出的對(duì)話框中選擇JUnit4并點(diǎn)擊確定,如上圖所示,JUnit4軟件包就被包含進(jìn)我們這個(gè)項(xiàng)目了。
4、生成JUnit測(cè)試框架:在Eclipse的Package Explorer中用右鍵點(diǎn)擊該類彈出菜單,選擇“New?à?JUnit Test Case”。如下圖所示:
5、在彈出的對(duì)話框中,進(jìn)行相應(yīng)的選擇,如下圖所示:
6、點(diǎn)擊“下一步”后,系統(tǒng)會(huì)自動(dòng)列出你這個(gè)類中包含的方法,選擇你要進(jìn)行測(cè)試的方法。此例中,我們僅對(duì)“加、減、乘、除”四個(gè)方法進(jìn)行測(cè)試。如下圖所示:
之后系統(tǒng)會(huì)自動(dòng)生成一個(gè)新類CalculatorTest,里面包含一些空的測(cè)試用例。你只需要將這些測(cè)試用例稍作修改即可使用。完整的CalculatorTest代碼如下:
package?andycpp;
import?static?org.junit.Assert.*;
import?org.junit.Before;
import?org.junit.Ignore;
import?org.junit.Test;
public?class?CalculatorTest?{
private?static?Calculator?calculator?=?new?Calculator();
@Before
public?void?setUp()?throws?Exception?{
calculator.clear();
}
@Test
public?void?testAdd()?{
calculator.add(2);
calculator.add(3);
assertEquals(5,?calculator.getResult());
}
@Test
public?void?testSubstract()?{
calculator.add(10);
calculator.substract(2);
assertEquals(8,?calculator.getResult());
}
@Ignore("Multiply()?Not?yet?implemented")
@Test
public?void?testMultiply()?{
}
@Test
public?void?testDivide()?{
calculator.add(8);
calculator.divide(2);
assertEquals(4,?calculator.getResult());
}
}
7、運(yùn)行測(cè)試代碼:按照上述代碼修改完畢后,我們?cè)贑alculatorTest類上點(diǎn)右鍵,選擇“Run As?à?JUnit Test”來運(yùn)行我們的測(cè)試,如下圖所示:
8、運(yùn)行結(jié)果如下:
創(chuàng)建單元測(cè)試,該工具可以對(duì)任何類、接口、結(jié)構(gòu)等實(shí)體中的字段、屬性、構(gòu)造函數(shù)、方法等進(jìn)行單元測(cè)試。創(chuàng)建單元測(cè)試大致可以分為兩類:
整體測(cè)試,整體測(cè)試是在類名稱上右擊鼠標(biāo),在下拉菜單中點(diǎn)擊創(chuàng)建單元測(cè)試選項(xiàng)。這樣就可以為整個(gè)類創(chuàng)建單元測(cè)試了,這時(shí)他會(huì)為整個(gè)類可以被測(cè)試的內(nèi)容全部添加測(cè)試方法。開發(fā)人員直接在這些自動(dòng)生成的測(cè)試方法中添加單元測(cè)試代碼就可以了。
單獨(dú)測(cè)試,如果只想單獨(dú)對(duì)某個(gè)方法、屬性、字段進(jìn)行測(cè)試,則可以將鼠標(biāo)焦點(diǎn)放在這個(gè)待測(cè)試的項(xiàng)目名稱之上,然后點(diǎn)擊鼠標(biāo)右鍵,在右鍵菜單中選擇創(chuàng)建單元測(cè)試選項(xiàng)。這樣就可以單獨(dú)為某個(gè)方法創(chuàng)建單元測(cè)試了。
運(yùn)行單元測(cè)試-》查看測(cè)試結(jié)果
當(dāng)前名稱:java單元測(cè)試代碼生成 java測(cè)試類代碼
當(dāng)前鏈接:http://muchs.cn/article30/dojhdpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、關(guān)鍵詞優(yōu)化、、網(wǎng)站導(dǎo)航、域名注冊(cè)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)