文章目录
- 目标
- 1、使用 @Category 进行用例分组
- (1)设置用例组
- (2)编写测试类,case设置对应的用例组
- (3)编写执行类
- (4)查看运行结果
- (5)联系项目
 
- 2、参数化
目标
-  用例根据(pass情况、地图类型特点、HLL自建地图的问题) 
 解决方案
-  使用 @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)@Testpublic void b() {System.out.println("开始执行高德地图用例");}// 用例分组,百度组@Category(BaiduTest.class)@Testpublic void c(){System.out.println("开始执行百度地图用例");}// 用例分组,(高德、百度组)@Category({GDTest.class, BaiduTest.class})@Testpublic void d(){System.out.println("开始执行高德、百度组 共同用例");}}
(3)编写执行类
@RunWith(Categories.class)
@Suite.SuiteClasses(A.class)// 要执行的测试类
@Categories.IncludeCategory({GDTest.class})  // 通过的用例组
public class SlowTestSuite {}
(4)查看运行结果
- b 通过,打印高德用例执行
- D 通过,打印 高德百度 用例执行
![[图片]](https://img-blog.csdnimg.cn/3367f8417c57414382030497e1467225.png)
![[图片]](https://img-blog.csdnimg.cn/838bc3ba1bd84245ab15794d9fc80869.png)
(5)联系项目
此时我们的第一个目标,给用例分组就实现了。
可以将 testBaseMap 中的类 根据测试 case 的 pass 情况、地图不同的特点、图商实现但HLL未实现功能,使用@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
//                "HLL_Map_Type"   // 对应HLL_MapType
//        });
//    }@Parameterized.Parameterspublic 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[]{    //               "HLL_Map_Type"   // 对应HLL_MapType//       });//   }public A(String MAp_Type){this.Map_Type = MAp_Type;}//  用例分组,高德组@Category(GDTest.class)@Testpublic void b() {System.out.println("开始执行高德地图用例");System.out.println(Map_Type);}// 用例分组,百度组@Category(BaiduTest.class)@Testpublic 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 上面跑 符合 高德地图的专门用例
![[图片]](https://img-blog.csdnimg.cn/960793ef5d7344e792b521e8ea6367c7.png)