单元测试用例分组 demo

本文介绍了如何在Android测试中使用@Category对测试用例进行分组,包括BaiduTest和GDTest两类,并演示了如何通过参数化实现根据不同地图类型执行特定用例。最后展示了如何创建测试套件来筛选符合特定条件的用例。

目标

  • 用例根据(pass情况、地图类型特点、自建地图的问题)
    解决方案

  • 使用 @Category 对用例进行分组,然后参数化类中手动设置即可,可以实现预期目标

1、使用 @Category 进行用例分组


(1)设置用例组


BaiduTest、GDTest 用例组接口编写,用于方法case分组

public interface BaiduTest {
}
public interface GDTest {
}

(2)编写测试类,case设置对应的用例组


测试类,用于写测试用例,然后@Category可以进行用例分组,方法级别的

注意:不要写Log.i 打印,目前没有在Android进行操作,只用 System.out.println() 打印即可

public class A {

      //  用例分组,高德组
     @Category(GDTest.class)
     @Test
     public void b() {
         System.out.println("开始执行高德地图用例");
     }


     // 用例分组,百度组
     @Category(BaiduTest.class)
    @Test
    public void c(){
         System.out.println("开始执行百度地图用例");
     }

     // 用例分组,(高德、百度组)
    @Category({GDTest.class, BaiduTest.class})
    @Test
    public void d(){
        System.out.println("开始执行高德、百度组 共同用例");
    }
 }

(3)编写执行类

@RunWith(Categories.class)
@Suite.SuiteClasses(A.class)// 要执行的测试类
@Categories.IncludeCategory({GDTest.class})  // 通过的用例组
public class SlowTestSuite {

}

(4)查看运行结果

  • b 通过,打印高德用例执行
  • D 通过,打印 高德百度 用例执行

[图片]

[图片]


(5)联系项目


此时我们的第一个目标,给用例分组就实现了。

可以将 testBaseMap 中的类 根据测试 case 的 pass 情况、地图不同的特点、图商实现但自建底图未实现功能,使用@Catagory 进行分组


2、参数化


后面可以加上参数化,给单独的用例组的用例加上对应的参数.


没有想到单独用例组对应一组参数的做法,但是可以通过另一种做法绕开来实现。


在测试类中可以实现多个参数化的方法,可以只留1个,其他几个注释掉。 或者在原来参数化的data() 方法里面直接注释掉其他几个,保留一个就行。用到什么类型,解掉什么类型的注释即可


@RunWith(Parameterized.class)
public class A {

    private String Map_Type ;

//    @Parameterized.Parameters
//    public static Collection<Object> data(){
//        return Arrays.asList(new Object[]{
//                "GD_Map_Type",  // 对应GD_MapType
//                "BD_Map_Type",  // 对应Baidu_MapType
//                "DD_Map_Type"   // 对应DD_MapType
//        });
//    }
    
    @Parameterized.Parameters
    public static Collection<Object> data(){
        return Arrays.asList(new Object[]{
                "GD_Map_Type",  // 对应GD_MapType
        });
    }
    
//    @Parameterized.Parameters
//    public static Collection<Object> data(){
//        return Arrays.asList(new Object[]{      
//                "BD_Map_Type",  // 对应Baidu_MapType 
//        });
//    }
    
//    @Parameterized.Parameters
//    public static Collection<Object> data(){
//        return Arrays.asList(new Object[]{    
 //               "DD_Map_Type"   // 对应DD_MapType
 //       });
 //   }

    public A(String MAp_Type){
        this.Map_Type = MAp_Type;
    }

      //  用例分组,高德组
     @Category(GDTest.class)
     @Test
     public void b() {
         System.out.println("开始执行高德地图用例");
         System.out.println(Map_Type);
     }


     // 用例分组,百度组
     @Category(BaiduTest.class)
    @Test
    public void c(){
         System.out.println("开始执行百度地图用例");
         System.out.println(Map_Type);
     }

 }

上面只保留了一个类型的参数 GD_Map,测试套件之后再筛选 符合高德地图的方法case用例,成功实现我们的期望效果。


@RunWith(Categories.class)
@Suite.SuiteClasses(A.class)// 要执行的测试类
@Categories.IncludeCategory({GDTest.class})  // 要求通过的高德-用例组
public class SlowTestSuite {

}

最终实现,在 GD_Type 上面跑 符合 高德地图的专门用例

[图片]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RAIN 7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值