在Eclipse中使用JUnit4進行單元測試(圖文教程一)

在Eclipse中使用JUnit4進行單元測試

    單元測試,JUnit4。html

   這兩個有什麼關係呢?這就比如(草)單元測試和(割草機)。用這個JUnit4工具去輔助咱們進行測試。其實不理解這個也不要緊,聽多了見多了用多了,天然而然地就會懂了。java

   有人可能會想,那我直接本身編寫個測試的方法不就能夠了。例如寫個System.out.print輸出,看看是否與咱們預期的相等。Bingo!這樣也是能夠的。可是你有割草機不用,那效果也是很Duang的。express

   開始我也以爲沒有必要使用割草機(JUnit)的,可是我瞭解了割草機(JUnit)以後,我很喜歡那種唰唰唰(綠條)的感受。小程序

   若是你仍是一臉疑惑不知道什麼是JUnit4,不知道單元測試,OK,Don‘t worry。Just Follow me.跟我一步一步來,先讓你體驗下唰唰唰的快感。api

 

第一步:框架

打開eclipse.exe,建立一個名爲「Ives」的工項目,建立一個名爲」UnitTest」的類。寫幾個方法:兩數+ - * /的方法和返回結果的方法。dom

代碼以下:eclipse

 1 import java.util.*;
 2 public class Expression {
 3     int a;
 4     int b;
 5     static int c;//用戶答案
 6     int answer;//答案
 7     static Scanner in=new Scanner(System.in);
 8 
 9 
10 public int Expression(){
11     a = new Random().nextInt()%10;
12     b = new Random().nextInt()%10;
13     System.out.print(""+a+"+"+b+"=");
14     return answer = a + b;
15 
16 }
17 public static void main(String[] args){
18     int answer;
19     Expression expression = new Expression();
20     answer = expression.Expression();
21     try{
22         Expression.c = in.nextInt();
23     }
24     catch(InputMismatchException e)
25     {   System.err.println("\nError  ,please Enter a Int number");
26     }
27     if(answer==c)
28     {
29         System.out.print("答對了");
30     }
31     else System.out.print("答錯了");
32     //System.out.print("answer="+answer);
33 }
34 }
View Code

 

 

第二步:ide

Duang!酷炫的效果來了,跟緊腳步了。工具

JUnit4單元測試包引入這個項目:在該項目「Ives」上點右鍵,點「屬性」(Properties),如圖:

在彈出的屬性窗口中,首先在左邊選擇「Java 構建路徑(Java Build Path)而後到右上選擇"庫(L)"(Libraries)標籤,以後在最右邊點擊「添加庫(A)」(Add Libraries)按鈕,以下圖所示:

 

點擊完成,JUnit4軟件包就被包含進咱們這個項目了。

 

第三步:

生成JUnit測試框架:在Eclipse的包資源管理器(Package Explorer)中用右鍵點擊該類」UnitTest「彈出菜單,選擇 新建 →JUnit測試用例 (New à JUnit Test Case)。以下圖所示:

 

 

 

在彈出的對話框中,進行相應的選擇,以下圖所示:


點擊完成以後會出現以下圖:

 

 

千萬不要去刪除@Test這個標誌很重要的!!!!!而後把fail(「還沒有實現」)刪除,把本身的代碼敲進去就能夠了。我選擇了測試4個方法,因此它會自動生成4個測試方法。

 

Duang!!!

那測試方法怎麼寫呢?舉個例子,我想知道個人UnitTest裏面的plus方法有沒有寫對,那我就對這個方法寫個測試。把a,b兩個數傳遞進去,例如a=1和b=1,那a+b就等2,因此這裏咱們又要了解新的東西了。那就是關於JUnit 的api了,下面有關於JUnit的api,到時候我看看要不要貼幾個經常使用的方法出來,加上實例,這樣會更加容易理解。

繼續咱們的話題:咱們知道a+b=2,因此若是plus方法的result是2的話,那就說明了咱們的這個plus暫時沒有這類型的bug。因此咱們要用到方法assertEquals(double expected, double actual)這個方法裏的double expected是咱們指望的值,double actual是實際的值。例如assertEquals(2, a+b),這樣就能夠測試方法有沒有算錯了。其實電腦通常都不會算錯吧?哈哈

 

完整的測試代碼以下:

 1 import static org.junit.Assert.*;
 2 import org.junit.Test;
 3 
 4 public class UnitTestTest {
 5     public static UnitTest puls = new UnitTest();
 6     public static int answer;
 7     @Test
 8     public void testPlus() {
 9         puls.plus(1,1);
10         assertEquals(2, puls.getresult());
11     }
12 
13     @Test
14     public void testMinus() {
15         puls.minus(1,1);
16         assertEquals(0, puls.getresult());
17     }
18     
19     @Test
20     public void testMultiply() {
21         puls.multiply(1,1);
22         assertEquals(1, puls.getresult());
23         
24     }
25     
26     @Test(expected=ArithmeticException.class)
27     public void testDivide1(){
28         puls.divide(0, 1);
29     }
30     
31     @Test
32     public void testDivide() {
33         puls.divide(1,1);
34         assertEquals(1, puls.getresult());
35     }
36 }
View Code

 

可能用心看的童鞋可能會發現我還寫了一個測試時關於有沒有拋出異常的。若是除數爲0那就拋出異常,再去測試它除數爲0是有沒有拋出異常。有人可能會問,我不知道什麼異常啊,很簡單,看

 

 

咱們寫完代碼,那麼唰唰唰的快感立刻就要到來了。

 

 

我把minus方法裏的「減號」改爲了「加號」:以下圖

 

而後在運行測試類UnitTestTest.以下圖:

 

被測試的代碼有bug,也就是以前把-修改爲了+,因此就會出故障。

 

因此當所有都是綠色的時候是否是很爽,有沒有感覺到割草機(JUnit4)的唰唰唰的快感。

哈哈,教程到這裏就結束了。是否是還想要更多?那就持續關注個人博客吧,可能會在更新一遍更加細節的。

 

我的體會:

1.測試類必定要看清楚有沒有寫對,有時候複製黏貼沒有修改就會出現錯誤,因此要看清楚調用的方法對了沒有。

2.這個好像真的有比本身寫一個測試類來測試更爽,由於有一條綠色的東西,感受很好玩。

3.我以爲這些小程序不須要寫單元測試,並且看到好多人在網上吐槽說如今基本作開發的都不會去寫單元測試的,不過,寫多點沒事兒,所學點更好。因此我不想去追究之後有沒有用,如今能學想學那就去學,能寫想寫,那就去寫。因此有時候真的不須要問爲何?有不少事情你如今作可能沒有收益,也可能之後也沒有收益,那爲何要去作呢?

柯騰說,你信不信十年後,我連log是什麼都不知道,還能夠活得好好的。 沈佳宜說,我知道。 柯景騰說,那你還那麼用功讀書。 沈佳宜說,人生原本不少事就是徒勞無功的啊!不是每一件事必定要有意義,經歷一樣很寶貴! 

有感而發,就引用了這句話了。哈哈

 

---------這篇博文就到此結束了------------

 

 

--------若是以上有什麼錯誤或者不足之處,歡迎指出。--------

 

PS:長期招募小夥伴一塊兒組成一個團隊學習軟件開發(java), 能夠合做開發軟件,也能夠討論交流,有志同道合的小夥伴能夠發站內消息。

 

附:

 Junit API:http://www.udel.edu/CIS/software/dist/junit4.1/javadoc/

相關文章
相關標籤/搜索