標籤:
在有些時候,我們需要對我們自己編寫的代碼進行單元測試(好處是,減少後期維護的精力和費用),這是一些最基本的模組測試。當然,在進行單元測試的同時也必然得清楚我們測試的代碼的內部邏輯實現,這樣在測試的時候才能清楚地將我們希望代碼邏輯實現得到的結果和測試實際得到的結果進行驗證對比。
廢話少說,上代碼:
首先建立一個java工程,在工程中建立一個被單元測試的Student資料類,如下
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下單元測試這個類:
首先匯入Junit包:選中java工程,點擊滑鼠右鍵--->選擇properties---->在視窗中選Java Build Path---->在右側點擊Add Library---->在彈出的視窗列表中選中Junit---->下一步----->Junit 4(我用的是Junit 4)---->finish
這樣Junit 4包就導完了,接下來就是建立測試類別:
將測試類別和被測試類別放在不同的包中(也可以放在同一個包中,此處只是為了區別),代碼如下:
測試類別1:
package com.phicomme.test;import com.phicomme.hu.Student;import junit.framework.TestCase;public class StudentTest01 extends TestCase{ Student testStudent; //此方法在執行每一個測試方法之前(測試案例)之前調用 @Override protected void setUp() throws Exception { // TODO Auto-generated method stub super.setUp(); testStudent = new Student("djm", "boy", 178, 24, "華東政法"); System.out.println("setUp()"); } //此方法在執行每一個測試方法之後調用 @Override protected void tearDown() throws Exception { // TODO Auto-generated method stub super.tearDown(); System.out.println("tearDown()"); } //測試案例,測試Person對象的getSex()方法 public void testGetSex() { assertEquals("boy", testStudent.getSex()); System.out.println("testGetSex()"); } //測試Person對象的getAge()方法 public void testGetAge() { assertEquals(24, testStudent.getAge()); System.out.println("testGetAge()"); }}
測試類別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() { //預期值和實際值不一樣,測試時出現失敗(Failure) assertEquals("南昌大學", testStudent.getSchool()); } public void testGetName() { assertEquals("hdy", testStudent.getName()); }}
當然,如果同時需要一起測試以上這兩個測試類別,可以通過TestSuite類實現,它相當於是一個套件,可以把所有測試類別添進來一起運行測試;
代碼如下:
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; }}
最後,分別測試以上三個類(選中需要測試的類---->滑鼠右鍵---->Run As---->Junit Test):
StudentTest類的測試結果圖:
StudentTest01類的測試結果圖:
AllTest類的測試結果圖:
有關java的測試就講到這裡,希望對大家有協助,有時間也會接著講講有關android的單元測試,和在手機上實現編寫一個UI介面替代eclipse如中的測試介面;
本文轉自:http://blog.csdn.net/stevenhu_223/article/details/8269157
Java 單元測試(Junit)