Junit测试项目基础

         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;		 
}	 
}


 

 同时如何要对一个方法重复测试多次。可以如此

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   Junit4 并没用要求测试的类一定要继承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   虽然Junit4没用要求方法名的格式,但是一定要有一个好的命名习惯。

        用@Before 和 @After 可以实现构建和销毁,实现Junit3.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));   
	    }
		
}


                     



 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值