码迷,mamicode.com
首页 > 其他好文 > 详细

junit4的进一步探讨

时间:2014-11-17 20:59:14      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   使用   sp   java   

上次只是大概记录了下junit4几个常见标签的用法。

在这篇文章中,我们来进一步分析junit4的用法。

 

1.断言

junit4中一个很常见的用法就是断言。说到断言,大家再熟悉不过了。不过也许有的朋友会有些疑问,为嘛有时候用assertEquals而有时候看到别人又用Assert.assertEquals()。其实两个的用法都是一样的,只是引入包的时候有点区别,只要你用心观察你会发现,用assertEquals时是“import static org.junit.Assert.*”,这是一个静态包含(static),是JDK5中新增的一个功能。也就是说assertEquals是assertEquals是Assert类中的一系列的静态方法,一般的使用方式是Assert. assertEquals(),但是使用了静态包含后,前面的类名就可以省略了,使用起来更加的方便。不过具体用哪个还是看个人习惯啦。

 

2.限时测试

有些程序的逻辑比较复杂,循环嵌套深,很有可能出现死循环。或者是测前端的时候有时候由于网速的原因,过了很长时间还是找不到某些页面元素。这时候我们可能希望程序会有某些处理机制。限时测试就是一个很好地解决方案。我们可以给我们的测试函数设定一个时间,超过了这个时间,就判定测试失败,并终止这个用例的执行。

要实现这一功能,给@Test标签加一个参数就行。

如:

@Test(timeout=1000)

public void test(){

....

}

以上表明如果程序在1000ms(注意这里的单位是ms),也就是1s内没有执行完,则test失败。

 

3.异常测试

有时候我们编写的函数需要抛出异常,那么我们在测试这个程序的时候肯定也就希望能捕获这个异常,如果没有捕获到,则说明测试失败。

@Test(expected=MyException.class)

public void test(){

}

 

4.Suite测试

请参照文章“用junit testSuite管理测试用例” http://www.cnblogs.com/weiweiyao/p/4092877.html

这个就不说了,之前写过。

 

5.参数化测试

你可能遇到过这样的函数,它的参数有许多特殊值,或者说他的参数分为很多个区域。举一个比较简单的例子吧,像如下函数:

public class Try {

    public  int result=3;

     public  int add(int n) {

        result += n;

        return result;

    }

}

如果我想测试不同的输入值,则我需要写很多个@Test方法。如果测试的函数再复杂些,有各种边界值需要校验的话,那么你可能就需要写更多的@Test方法了。

比如:

    @Test

    public void test1(){

    assertEquals(1,4);

    }

    @Test

    public void test2(){

    assertEquals(3,6);

    }

但是如果用参数化测试的话,可以简化,我们只需要写一个测试函数,就可以把若干种情况作为参数传递进去,一次性的完成测试。

测试代码如下:

 

import java.util.Arrays;

import java.util.Collection;

 

import org.junit.Test;

import org.junit.runner.RunWith;

import org.junit.runners.Parameterized;

import org.junit.runners.Parameterized.Parameters;

 

import junit.framework.TestCase;

 

//步骤1.指定特殊的运行器Parameterized.class

@RunWith(Parameterized.class)

public class TryTest extends TestCase {

    

     //步骤2:为测试类声明几个变量,分别用于存放期望值和测试所用数据。此处我只放了测试所有数据,没放期望值。 

     private int param,result;

    

     //步骤3:申明构造函数

     public TryTest(int param, int result) {

         super();

         this.param = param;

         this.result = result;

     }

     //步骤4:定义测试数据的集合,该方法可以任意命名

     //但是必须使用@Parameters标注进行修饰

     //这个方法的框架就不予解释了,大家只需要注意其中的数据,是一个二维数组,数据两两一组

     //每组中的这两个数据,一个是参数,一个是你预期的结果。

     //比如我们的第一组{4, 7},4就是参数,7就是预期的结果。分别对应上面构造函数的param和result

     @Parameters

    public static  Collection testDate(){

         Object[][] object = {

                { 1, 4},

                { 3, 6 },

                {1,3}};

    return Arrays.asList(object);

   

    }

    //步骤5:编写测试方法,使用定义的变量作为参数进行测试

     //这里的编写方法和以前的测试方法一样

    @Test

    public void testAdd(){

    Try test=new Try();

    assertEquals(result,test.add(param));

    }

}

 

测试结果:

(1,4)测试通过,(3,6)测试通过,(1,3)测试不通过,期望结果是3,实际结果却是4。

 bubuko.com,布布扣

 

6.设置忽略某个测试用例

 

     对于你想暂时不进行的test case, 在该方法前添加@Ignore

 

@Ignore("Not Ready to Run" )        
@Test     
public void test1() {        
        assertEquals(1, 4);        
}

 

 

 

junit4的进一步探讨

标签:style   blog   http   io   color   ar   使用   sp   java   

原文地址:http://www.cnblogs.com/weiweiyao/p/4104211.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!