Junitテスト項目基礎

5665 ワード

Junit 3.8
 
 
1 .eclipseの下にJunitのlibraryを追加
 
右クリックアイテム-』Build Path-』add library-』選択Junit
 
2.jarパッケージを公式サイトでダウンロードし、プロジェクトにインポートすればよい.
 
3.試験用例を作成する.srcの同じレベルの下に新しいsrc foldをtestと名付けます.testの下に新しく作成されたテスト例は、テストするクラスに対応します.例えば.Student.java   --》studentTest.Java
 
4.Junitスローガン:keep the bar green to keep the code clean
 
5.ユニットテストはあなたが正しいことを証明するためではなく、あなたが間違っていないことを証明するためです.   
 
6.試験例はユニット試験の重要な側面である.
http://d.download.csdn.net/down/1653850/jerry2011
http://download.csdn.net/source/1653850#acommentリンクのダウンロード
 
7.テストクラスTestCaseの親を継承する
7.1満たさなければならない原則public void無パラメータメソッド名はtestで始まる必要があります
 
8.TestCaseの間には完全な独立性を保たなければならず、いかなる依存関係も許されない.
 
9.TestCaseをテストする順序に依存してはいけない.
 
10. DRY  (don’t  repeat  yourself)
 
11普通は先にテストを書いて、後で実例を書きます
 
12 public static void main(String[]args]{//Junitが持参したドライバ
         junit.textui.TestRunner.run(xx.class);       
    }
 
13 . テスト前はどんな状態で、テスト後はどんな状態になるべきですか.
 
 
14.プライベートメソッドのテスト
A.修正方法のアクセス修飾子
B.反射を利用してテストクラスでターゲットクラスのプライベートメソッドを呼び出す.(推奨)
 
15.テストキットTestSuiteは、複数のテストを組み合わせて同時に複数のテストを実行することができます.
 
TestAllクラスを作成し、次のようにします.
 
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class TestAll extends TestCase{
public static TestSuite suite(){		   
		  TestSuite suite = new TestSuite();
		  suite.addTestSuite(Calculator2Test.class);
		  suite.addTestSuite(DeleteAllTest.class);
		  suite.addTestSuite(CalculateTest.class);
		  return  suite;		 
}	 
}


 
同時に、1つの方法を複数回繰り返しテストする方法.そうすることができる
TestSuite suite = new TestSuite();
		  suite.addTestSuite(Calculator2Test.class);
		  suite.addTestSuite(DeleteAllTest.class);
		  suite.addTestSuite(CalculateTest.class);
		  // calculate add 20 
 suite.addTest(new  RepeatedTest(new CalculateTest("testAdd"),20)); 
		  return  suite;	



 
    Junit4
 
16 Junit 4はテストを要求するクラスではなく必ずTestCaseを継承し,Annotionを導入することができる.メソッド名の前に@Testを加える.
 
次のようになります.
public class CalculatorJunit4Test{
	   private CalculatorJunit4 calculatorJunit4;	
	   public CalculatorJunit4Test() {         
		     calculatorJunit4 = new CalculatorJunit4();	          
		}
	 @org.junit.Test
	 public void testAdd(){		 
		 int result = calculatorJunit4.add(2, 3);
		 Assert.assertEquals(5, result);
	 }		
}



 
 
17 Junit 4はメソッド名のフォーマットを要求していませんが、必ず良い命名習慣が必要です.
@Beforeと@Afterで構築と廃棄を実現でき、Junit 3を実現できる.8のsetUpメソッドとtearDownメソッド.
 
 
 
 
18@Before Classおよび@AfterClassを使用して、グローバルな初期化方法を定義します.データベースのリンクなどです.
 
  
  @BeforeClass
	  public static void globalInit(){
		  
		  System.out.println("globalInit()");		  
	  }
	  @AfterClass
	  public static void globalDestory(){  
		  System.out.println("globalDestory()");
		  
	  }


19.@Test(timeout=300)を用いて,一つの方法がタイムアウトしたか否かを判定することができる.
@Test(expected=Exception.class)で異常発生の有無を判定します.
@Ignore("string")を利用して、テストをしないでください.クラス全体にも使えます.
 
次のようになります.
 @Test(timeout=3000)           // 3   
	 
	 public void testAdd(){		 
		 		 	 
		 int result = calculatorJunit4.add(2, 3);		 
		 
		 Assert.assertEquals(5,result);
	 }		 
	 
	  @Ignore
     
	  @Test(expected = Exception.class)// 
     
	  public void testDivide() throws  Exception{		 
		 		 	 
	  calculatorJunit4.divide(1, 0);		 		 
	
	 }	
	

 
20パラメトリックテスト(Parameters):テストクラスがパラメータを使用して実行される場合、クラスの前に@Parameters注記を宣言して修飾し、構築方法でパラメータに値を割り当てる必要があります.最後にテストクラスを作成します.
 
次のようになります.
 
import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;


@RunWith(Parameterized.class)
public class ParametersTest {
	    private int expected ;
	    private int input1;
	    private int input2;
	    private CalculatorJunit4 cal;
	    	
	    @Parameters
	    public  static  Collection preparedData(){	    	
	    	Object  object[][] = {{5,2,3},{8,1,7},{0,-1,1},{20000,10000,10000}};
	    	return  Arrays.asList(object);	    	
	    }    
	    
	    public ParametersTest(int ex,int inp1,int inp2){
	    	 this.expected = ex ;
	    	 this.input1 = inp1;
	    	 this.input2 = inp2;	    	    	
	    }
	    
	    
	    @Before
	    public   void setUp(){ 
	    	  System.out.println("setUp");
	    	  cal = new  CalculatorJunit4();
	    }
	    
	    @Test
	    public void testAdd(){	    		    
	     assertEquals(this.expected, cal.add(this.input1, this.input2));   
	    }
		
}