java單元測試(Junit)

來源:互聯網
上載者:User

標籤:

  JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個迴歸測試架構(regression testing framework),供Java開發人員編寫單元測試之用。 對不同性質的被測對象,如Class,Jsp,Servlet,Ejb等,Junit有不同的提示。以下以Class測試為例講解。 

   測試步驟:

  1 匯入junit4相關的jar包

  (選中java工程,點擊滑鼠右鍵--->選擇properties---->在視窗中選Java Build Path---->在右側點擊Add Library---->在彈出的視窗列表中選中Junit---->下一步----->Junit 4(我用的是Junit 4)---->finish)

  2 可以在要測試的類new出測試類別,選setUp,next選中要測試的方法,系統會 自動產生相應測試方法,修改相應的方法裡內容。

        也可以點擊src--->右鍵--->new--->Test Junit Case

      在test方法中寫測試方法。

        也可以自訂測試方法,不過要加上@Test的註解,方法格式為 public void testXXX()throws Exception{     } 

       例如:

          @Test
            public void testadd() throws Exception{
          }

  3 修改測試類別(先new被測試類別的執行個體,然後對方法進行單個測試(eg:assertEquals(8, calculator.getResult())))

  4 run as junit測試(可以顯示出Outline視窗,選中要測試的測試類別,在Outline中選中要測試的方法右擊run as Junit test)

 代碼執行個體:

  被測試類別:

public class Calculate {
//加法運算
public int sum(int x,int y){
return x+y;
}
//減法運算
public int sub(int x,int y){
return x-y;
}
}

    測試類別:

import static org.junit.Assert.*;
import junit.framework.TestCase;
import org.junit.Test;

public class CalculateTest extends TestCase{

Calculate calculate = new Calculate();//先new出被測試類別的執行個體對象
@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
super.setUp();
}

@Override
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
super.tearDown();
}

@Test
public void testSum() {
assertEquals("測試加法", 4, calculate.sum(1, 3));//進行測試
}

@Test
public void testSub() {
assertEquals("測試減法", 2, calculate.sub(4, 3));//進行測試
}

}

     大家有興趣深入研究還可以瞭解:

   Junit本身是圍繞著兩個設計模式來設計的:命令模式(JUnit Test Case)和整合模式(Junit Test Suite).

             

   簡單的說:JUnit Test Case是進行單個的方法測試。而Junit Test Suite是進行集合(集合中可以包括多個Test Cas和Test Suite)測試的。

   代碼執行個體如下:

Test Case單個測試:

  例如,我們要測試Money的Add方法,可以如下: 
public class MoneyTest extends TestCase { //TestCase的子類 
public void testAdd() { //把測試代碼放在testAdd中 
Money m12CHF= new Money(12, "CHF"); //本行和下一行進行一些初始化 
Money m14CHF= new Money(14, "CHF"); 
Money expected= new Money(26, "CHF");//預期的結果 
Money result= m12CHF.add(m14CHF); //運行被測試的方法 
Assert.assertTrue(expected.equals(result)); //判斷運行結果是否與預期的相同 



  如果測試一下equals方法,用類似的代碼,如下: 
public class MoneyTest extends TestCase { //TestCase的子類 
public void testEquals() { //把測試代碼放在testEquals中 
Money m12CHF= new Money(12, "CHF"); //本行和下一行進行一些初始化 
Money m14CHF= new Money(14, "CHF"); 

Assert.assertTrue(!m12CHF.equals(null));//進行不同情況的測試 
Assert.assertEquals(m12CHF, m12CHF); 
Assert.assertEquals(m12CHF, new Money(12, "CHF")); // (1) 
Assert.assertTrue(!m12CHF.equals(m14CHF)); 




  當要同時進行測試Add和equals方法時,可以將它們的各自的初始化工作,合并到一起進行,形成測試基礎,用setUp初始化,用tearDown清除。如下: 
public class MoneyTest extends TestCase {//TestCase的子類 
private Money f12CHF;//提取公用的對象 
private Money f14CHF; 

protected void setUp() {//初始化公用對象 
f12CHF= new Money(12, "CHF"); 
f14CHF= new Money(14, "CHF"); 

public void testEquals() {//測試equals方法的正確性 
Assert.assertTrue(!f12CHF.equals(null)); 
Assert.assertEquals(f12CHF, f12CHF); 
Assert.assertEquals(f12CHF, new Money(12, "CHF")); 
Assert.assertTrue(!f12CHF.equals(f14CHF)); 


public void testSimpleAdd() {//測試add方法的正確性 
Money expected= new Money(26, "CHF"); 
Money result= f12CHF.add(f14CHF); 
Assert.assertTrue(expected.equals(result)); 

Test Suite集合測試:

public class MoneyTest extends TestCase {//TestCase的子類 
.... 
public static Test suite() {//靜態Test 
TestSuite suite= new TestSuite();//產生一個TestSuite 
suite.addTest(new MoneyTest("testEquals")); //加入測試方法 
suite.addTest(new MoneyTest("testSimpleAdd")); 

suite.addTest(new MoneyTest(MoneyTest.class)); //以類為參數 
return suite; 

}  

 

 

 

 

 

java單元測試(Junit)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.