討厭鬼最大的動力來源

當我們在開發程式的時候

都會去測試程式有沒有寫錯

往往在開發網頁程式的時候

我們的測試java程式有沒有寫錯

都是直接在網頁上看資料有沒有出來

網頁上資料有出來還好~至少有問題不會是沒撈到資料

如果沒有資料出來呢?

要先檢查有沒有撈到資料再判斷是不是網頁的哪裡寫錯了

是程式錯還是設定錯了

如果只是單純的要測式java程式

而不想開啟server的話呢

有一個套件非常的好用~

那就是junit了~如果再加上ant的話

就可以做到自動化測式

那討厭鬼就開始了

首先要先import junit library

先對專案按右鍵 > Build Path > Configure Build Path

junit1

 

 

選擇libraries頁籤

點選Add Library

junit2

 

 

選擇JUnit後點Next
junit3

 


選擇JUnit4後點Finish

junit4

 

你的library就會有junit了

 

 

接下來在src下新增一個package~名稱要叫什麼都可以

討厭鬼在這邊是叫junit

接下來在這個package下新增一個class

class的名稱隨意~

討厭鬼在這邊是叫JunitTest

在Junit4前面要執行test很簡單

只要在你的method上面加上@test

再對class按右鍵 Run As > JUnit Test

你的method就會被執行

 

假如我寫了一個驗證是否為integer的class

public class TestNum{
   public boolean isNumber(String data) {
        try {
            Integer.valueOf(data);
        } catch (Exception e) {
            return false;
        }
        return true;
    }
}

 

然後在下面的範例的method test1與test2前面加了@test

並且在method中都呼叫TestNum去驗證是否為integer

執行Run As > JUnit Test

 

 public class JunitTest {

    @Test
    public void test1(){
        TestNum testNum = new TestNum();
        Assert.assertEquals(true,testNum.isNumber("qwe") );
    }

 

    @Test
    public void test2(){
        Assert.assertEquals(true,testNum.isNumber("123"));
    }

 

而method test1與test2因為有加@test都會被執行

而 Assert.assertEquals()這個是指結果有沒有跟預想中的一樣

 Assert.assertEquals("預期結果","實際結果");

若與預期結果不一樣則結果會出現fail

 一個出現success

一個出現fail

 

而常用的還有

@Before =>是指會在每一個@test前先執行一次

@After =>是指會在每一個@test後再執行一次

@BeforeClass 是指會在執行class前會先執行一次

@AfterClass   是指執行完class後會執行一次

 

用下面簡單的範例來做說明就可以明白了

討厭鬼在每一個method中都加上 System.out.println來看執行的先後序順

 

public class JunitTest {

    @BeforeClass
    public static void beforeClass(){
        System.out.println("beforeClass");
    }

    @Before
    public void before(){
        System.out.println("before");
    }
    
    @AfterClass
    public static void afterClass(){
        System.out.println("afterClass");
    }

    @After
    public void after(){
        System.out.println("after");
    }


    @Test
    public void test1(){
        TestNum testNum = new TestNum();
        System.out.println("test1");
        Assert.assertEquals(true,testNum.isNumber("qwe") );
    }

 

    @Test
    public void test2(){
        TestNum testNum = new TestNum();
        System.out.println("test2");
        Assert.assertEquals(true,testNum.isNumber("123"));
    }

 

執行結果為

beforeClass
before
test1
after
before
test2
after
afterClass

 

在這邊需要注意的是~

所有的的method都要是public

而@BeforeClass與@AfterClass的兩個method 還要加上static才能運作

 

下次再發Spring+Hibernate的Junit的配置

有關自動化測試等到下次發Junit時再一併說明

文章標籤
創作者介紹

討厭鬼教學

討厭鬼 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 涵大大
  • 您是不是忘記在testNum後面加.isNumber?
    還有您test2忘記宣告了
    類似底下這樣

    @Test
    public void test1(){
    TestNum testNum = new TestNum();
    Assert.assertEquals(true,testNum.isNumber("qwe") );
    }



    @Test
    public void test2(){
    TestNum testNum = new TestNum();
    Assert.assertEquals(true,testNum.isNumber("123") );
    }
  • 哈~是討厭鬼忘記加了,金拍謝呀

    討厭鬼 於 2014/04/10 14:30 回覆