當我們在開發程式的時候
都會去測試程式有沒有寫錯
往往在開發網頁程式的時候
我們的測試java程式有沒有寫錯
都是直接在網頁上看資料有沒有出來
網頁上資料有出來還好~至少有問題不會是沒撈到資料
如果沒有資料出來呢?
要先檢查有沒有撈到資料再判斷是不是網頁的哪裡寫錯了
是程式錯還是設定錯了
如果只是單純的要測式java程式
而不想開啟server的話呢
有一個套件非常的好用~
那就是junit了~如果再加上ant的話
就可以做到自動化測式
那討厭鬼就開始了
首先要先import junit library
先對專案按右鍵 > Build Path > Configure Build Path
選擇libraries頁籤
點選Add Library
選擇JUnit4後點Finish
你的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時再一併說明
留言列表