您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
JUnit4之隐藏特性"曝光"
作者:网络转载 发布时间:[ 2014/3/14 13:13:16 ] 推荐标签:JUnit4 单元测试

只要做Java开发的,99%的都用过JUnit。在JUnit4里面除了@Test, @Before, @BeforeClass这样基本的特性,JUnit4还有些很酷但是大家平时不太用的特性。我这里做一下介绍,大家可以用一下,或者至少把玩一下:) 以下特性都基于4.8版本。

    ParallelComputer: 并行测试

当需要同时测试testcase的时候,你不需要为自己写thread来做这个事情。JUnit4已经有了这个特性,而且还提供多种同步选择。例如:

    /**
     * @author 卢声远<michaellufhl@yahoo.com.cn>
     */ 
    public class ParallelComputerTest { 
        
       @Test 
        public void test() {     
          Class[] cls={ParallelTest1.class,ParallelTest2.class }; 
           
          //Parallel among classes 
          JUnitCore.runClasses(ParallelComputer.classes(), cls); 
           
          //Parallel among methods in a class 
          JUnitCore.runClasses(ParallelComputer.methods(), cls); 
           
          //Parallel all methods in all classes 
          JUnitCore.runClasses(new ParallelComputer(true, true), cls);    
        } 
       public static class ParallelTest1{ 
          @Test public void a(){} 
          @Test public void b(){} 
       } 
       public static class ParallelTest2{ 
          @Test public void a(){} 
          @Test public void b(){} 
       } 
    } 

你有3种同步方式:

1: ParallelComputer.classes():所有测试类同时开始执行,但是每个类里面的方法还是顺序执行。在例子里面ParallelTest1和ParallelTest2同时开始,但是各自的a(),b()还是顺序执行。

2: ParallelComputer.methods():测试类顺序执行,但是每个类里面的方法是同时开始执行。在例子里面ParallelTest1的a()和b()同时开始,等结束之后再开始ParallelTest2。

3: new ParallelComputer(true, true):所有测试类里面方法同时开始执行。在例子里面4个方法同时开始执行。

很有意思吧。

    Category: 分类测试

当你有很多testcase,但是你不想每次都执行一遍的时候。你可以把testcase分成若干类,然后可以分类有选择的来执行这些testcase。

例子:譬如你有2类testcase,一类是重要的用Important.class表示,还有一类不那么重要的用Secondary.class表示。

    /**
     * @author 卢声远<michaellufhl@yahoo.com.cn>
     */ 
    interface Important{}; 
    interface Secondary{}; 
    @RunWith(Categories.class) 
    @IncludeCategory(Important.class) 
    @ExcludeCategory(Secondary.class) 
    @SuiteClasses( { CategoryTest.Alpha.class,  
                     CategoryTest.Beta.class }) 
    public class CategoryTest { 
        
       @Category(Important.class) 
       public static class Alpha{//Alpha is Important except b 
          @Test  
          public void a(){} 
           
          @Test 
          @Category(Secondary.class) 
          public void b(){} 
       } 
        
       public static class Beta{ 
          @Test  
          @Category(Important.class) 
          public void a(){}//a is Important 
       } 
    } 

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd