1.說來好笑,記得以前單元測試都是在目标類裡簡單寫個main方法。要寫的方法多了,結果把整個main方法寫得特别長,注釋的亂亂的,每當測出問題的時候還覺得自己很聰明,心裡美滋滋的。可是,當一個方法需要回頭再次測的時候就犯愁了----到底是哪段注釋呢!是以,當接觸到Junit的時候,就覺得再離不開它了。
2.Junit是就是我們常用的單元測試工具,它采用測試類和目标類分離,各方法單獨執行的方式進行靈活測試,并且它還支援我們的斷點。更難能可貴的是,斷言可以在我們不必分析測試結果的情況下,就可以知道程式的正确與否。 而且在使用上,也非常簡單:
1>.目标類照常寫,測試類寫在Source Folder裡。其實為了清楚起見,測試類的包結構最好和目标類的包結構完全相同,一個目标類對應一個測試類,測試類的命名是在目标類名字的基礎上,前面加Test;
在測試類裡,每個目标方法對應一個測試方法,測試方法的命名是在目标方法的基礎上,前面加test。
2>.測試類要繼承Junit的TestCase類;測試方法無需傳回值,隻是在裡面完成測試代碼即可。
3>.在測試方法裡,可以通過目标類執行個體對目标方法進行調用測試。對于有傳回值的情況,我們可以接收傳回值,并設定一個期望傳回值,使用斷言方法(assertEquals)判斷兩者一否一緻。
3..各測試方法可以一起執行,也可以單獨執行。如果執行過程中出現異常或者期望值和實際值不一緻,則相應的Junit視窗會變紅并給出提示資訊。否則,就是我們最期望看到的滿屏綠燈,各測試方法正常運作。
注意,它用到一個Junit的jar包,我用的是junit-3.8.1.jar。
目标類:UserService.java
public class UserService {
public void insert(String user) {
System.out.println("UserService.insert():" + user);
}
public void delete(String user) {
System.out.println("UserService.delete():" + user);
public void update(String user) {
System.out.println("UserService.update():" + user);
public String query(String user) {
System.out.println("UserService.query():" + user);
return user;
}
測試類:TestUserService.java
public class TestUserService extends TestCase {
public void testInsert(){
UserService us=new UserService();
us.insert("Li Lei");
public void testDelete(){
us.delete("Han Meimei");
public void testUpdate(){
us.update("Jim");
public void testQuery(){
/**接收實際傳回值*/
String result=us.query("Tom");
/**設定個期望值*/
String expected="Li Lei";
/**比較實際值和期望值是否一緻,本例中顯然是不一緻的,是以測試時會出錯*/
this.assertEquals(expected, result);
本文轉自NightWolves 51CTO部落格,原文連結:http://blog.51cto.com/yangfei520/308018,如需轉載請自行聯系原作者