java編程之單元測(cè)試(Junit)實(shí)例分析(附實(shí)例源碼)
本文實(shí)例講述了java編程之單元測(cè)試。分享給大家供大家參考,具體如下:
完整實(shí)例代碼代碼點(diǎn)擊此處本站下載。
在有些時(shí)候,我們需要對(duì)我們自己編寫的代碼進(jìn)行單元測(cè)試(好處是,減少后期維護(hù)的精力和費(fèi)用),這是一些最基本的模塊測(cè)試。當(dāng)然,在進(jìn)行單元測(cè)試的同時(shí)也必然得清楚我們測(cè)試的代碼的內(nèi)部邏輯實(shí)現(xiàn),這樣在測(cè)試的時(shí)候才能清楚地將我們希望代碼邏輯實(shí)現(xiàn)得到的結(jié)果和測(cè)試實(shí)際得到的結(jié)果進(jìn)行驗(yàn)證對(duì)比。
廢話少說(shuō),上代碼:
首先創(chuàng)建一個(gè)java工程,在工程中創(chuàng)建一個(gè)被單元測(cè)試的Student數(shù)據(jù)類,如下:
package com.phicomme.hu; public class Student { private String name; private String sex; private int high; private int age; private String school; public Student(String name, String sex ,int high, int age, String school) { this.name = name; this.sex = sex; this.high = high; this.age = age; this.school = school; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getHigh() { return high; } public void setHigh(int high) { this.high = high; } public int getAge() { return age; } public boolean setAge(int age) { if (age >25) { return false; } else { this.age = age; return true; } } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } }
在eclipse下單元測(cè)試這個(gè)類:
首先導(dǎo)入Junit包:選中java工程,點(diǎn)擊鼠標(biāo)右鍵--->選擇properties---->在窗口中選Java Build Path---->在右側(cè)點(diǎn)擊Add Library---->在彈出的窗口列表中選中Junit---->下一步----->Junit 4(我用的是Junit 4)---->finish
這樣Junit 4包就導(dǎo)完了,接下來(lái)就是創(chuàng)建測(cè)試類:
將測(cè)試類和被測(cè)試類放在不同的包中(也可以放在同一個(gè)包中,此處只是為了區(qū)別),代碼如下:
測(cè)試類1:
package com.phicomme.test; import com.phicomme.hu.Student; import junit.framework.TestCase; public class StudentTest01 extends TestCase { Student testStudent; //此方法在執(zhí)行每一個(gè)測(cè)試方法之前(測(cè)試用例)之前調(diào)用 @Override protected void setUp() throws Exception { // TODO Auto-generated method stub super.setUp(); testStudent = new Student("djm", "boy", 178, 24, "華東政法"); System.out.println("setUp()"); } //此方法在執(zhí)行每一個(gè)測(cè)試方法之后調(diào)用 @Override protected void tearDown() throws Exception { // TODO Auto-generated method stub super.tearDown(); System.out.println("tearDown()"); } //測(cè)試用例,測(cè)試Person對(duì)象的getSex()方法 public void testGetSex() { assertEquals("boy", testStudent.getSex()); System.out.println("testGetSex()"); } //測(cè)試Person對(duì)象的getAge()方法 public void testGetAge() { assertEquals(24, testStudent.getAge()); System.out.println("testGetAge()"); } }
測(cè)試類2:
package com.phicomme.test; import junit.framework.TestCase; import com.phicomme.hu.Student; public class StudentTest extends TestCase { private Student testStudent; @Override protected void setUp() throws Exception { // TODO Auto-generated method stub super.setUp(); testStudent = new Student("steven_hu", "boy", 170 , 23, "上海理工"); } @Override protected void tearDown() throws Exception { // TODO Auto-generated method stub super.tearDown(); } public void testSetage() { assertTrue(testStudent.setAge(21)); } public void testGetSchool() { //預(yù)期值和實(shí)際值不一樣,測(cè)試時(shí)出現(xiàn)失敗(Failure) assertEquals("南昌大學(xué)", testStudent.getSchool()); } public void testGetName() { assertEquals("hdy", testStudent.getName()); } }
當(dāng)然,如果同時(shí)需要一起測(cè)試以上這兩個(gè)測(cè)試類,可以通過(guò)TestSuite類實(shí)現(xiàn),它相當(dāng)于是一個(gè)套件,可以把所有測(cè)試類添進(jìn)來(lái)一起運(yùn)行測(cè)試;
代碼如下:
package com.phicomme.test; import com.phicomme.hu.StudentTest02; import junit.framework.Test; import junit.framework.TestSuite; public class AllTest { //static PersonTest p = new PersonTest(); //static PersonTest p1 = new PersonTest(); public static Test suite() { TestSuite suite = new TestSuite("Test for com.phicomme.test"); //suite.addTest(p); //suite.addTest(p1); suite.addTestSuite(StudentTest.class); suite.addTestSuite(StudentTest01.class); return suite; } }
最后,分別測(cè)試以上三個(gè)類(選中需要測(cè)試的類---->鼠標(biāo)右鍵---->Run As---->Junit Test):
StudentTest類的測(cè)試結(jié)果圖:
StudentTest01類的測(cè)試結(jié)果圖:
AllTest類的測(cè)試結(jié)果圖:
有關(guān)java的測(cè)試就講到這里,希望對(duì)大家有幫助,有時(shí)間也會(huì)接著講講有關(guān)android的單元測(cè)試,和在手機(jī)上實(shí)現(xiàn)編寫一個(gè)UI界面替代eclipse如上圖中的測(cè)試界面;
希望本文所述對(duì)大家Java程序設(shè)計(jì)有所幫助。
相關(guān)文章
FuncGPT慧函數(shù)保護(hù)數(shù)據(jù)安全提高代碼質(zhì)量減少軟件故障(java示例)
這篇文章主要為大家介紹了FuncGPT慧函數(shù)保護(hù)數(shù)據(jù)安全提高代碼質(zhì)量減少軟件故障(java示例),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10深入理解java內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)
這篇文章主要介紹了Java多線程之內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)的深入理解新的和用法,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11解決IDEA Gradle構(gòu)建報(bào)錯(cuò)''Cause: zip END header not found''
這篇文章主要介紹了解決IDEA Gradle構(gòu)建報(bào)錯(cuò)"Cause: zip END header not found"的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(2)
這篇文章主要介紹了JavaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的第二篇,實(shí)現(xiàn)學(xué)生管理系統(tǒng)的查找和添加功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08java 序列化對(duì)象 serializable 讀寫數(shù)據(jù)的實(shí)例
java 序列化對(duì)象 serializable 讀寫數(shù)據(jù)的實(shí)例,需要的朋友可以參考一下2013-03-03SpringBoot整合SpringSecurity和JWT和Redis實(shí)現(xiàn)統(tǒng)一鑒權(quán)認(rèn)證
Spring Security是一個(gè)可以為Java應(yīng)用程序提供全面安全服務(wù)的框架,同時(shí)它也可以輕松擴(kuò)展以滿足自定義需求,本文主要介紹了SpringBoot整合SpringSecurity和JWT和Redis實(shí)現(xiàn)統(tǒng)一鑒權(quán)認(rèn)證,感興趣的可以了解一下2023-11-11Java實(shí)現(xiàn)消消樂(lè)中的消除功能
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)消消樂(lè)中的消除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07Java操作透明圖片并保持背景透明的實(shí)現(xiàn)
這篇文章主要介紹了Java操作透明圖片并保持背景透明的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11