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

当你执行后会发现只有Alpha.a()和Beta.a()执行到,Alpha.b()被@ExcludeCategory掉了。

    MaxCore: 失败优先

  当需要反复测试大量testcase的时候,你往往比较关注那些前一次失败的case。这个时候你可以利用MaxCore特性在每次执行testcase的时候优先执行那些上次失败的case。

例如:

    /**
     * @author 卢声远<michaellufhl@yahoo.com.cn>
     */ 
    public class MaxCoreTest { 
        
       private MaxCore fMax; 
        
       @Before 
       public void createMax() { 
          File fMaxFile= new File("MaxCore.ser"); 
          fMax= MaxCore.storedLocally(fMaxFile); 
       } 
        
       @Test  
       public void test(){ 
          Request request= Request.aClass(Delta.class); 
          fMax.run(request); 
          fMax.run(request);//b->c->a 
       } 
        
       public static class Delta{ 
          @Test public void a(){} 
          @Test public void b(){ 
             Assert.fail(); 
          } 
          @Test public void c(){} 
       } 
    } 

可以观察到第2次执行的时候Delta.b()由于第1次的失败而提前到了先执行。

    DataPoint: 参数数据

当需要测试不同输入参数的时候是不是要写一大堆testcase?不需要,因为JUnit4提供了参数化测试数据的特性。例如你想要测试2个整型数据作为输入参数的时候:

    /**
     * @author 卢声远<michaellufhl@yahoo.com.cn>
     */ 
    @RunWith(Theories.class) 
    public class DataPointTest { 
       @DataPoint 
       public static int ONE= 1; 
       @DataPoint 
       public static int TWO= 2; 
      
       /* You could also use @DataPoints instead of @DataPoint
       @DataPoints
       public static int[] points= { 1, 2 };*/ 
      
       @Theory 
       public void test(int first, int second) { 
       } 
    } 

通过观察test()被执行了4次,每次不同的组合作为参数输入。而且如果参数数目过多,你可以通过@DataPoints一下子把参数都设进去。用过@RunWith(Parameterized.class)的朋友可以和DataPoint做一下比较。

    TestedOn

这个功能也是参数化数据,只不过它是直接在参数上配置。例如:

    @Theory 
    public void test2(@TestedOn(ints={1,2})int first) { 
        System.out.println(first); 
    } 

结果打印出来"1,2"。

    PrintableResult: 打印结果

这个我认为倒是一个小功能,它只是把测试失败的结果以比较美观的格式打出来。例如:

    Result result = JUnitCore.runClasses(SomeTest.class); 
    System.out.println(new PrintableResult(result.getFailures())); 

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