文章目录
- 目标
- 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)
@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 情况、地图不同的特点、图商实现但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.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[]{
// "HLL_Map_Type" // 对应HLL_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 上面跑 符合 高德地图的专门用例