昨天有个小伙伴问我,有没有什么现成的测试报告模板,由于昨天实在比较忙就没顾上,所以今个有时间赶紧补上。一般力所能及的事,只要我有时间都会为大家解决,但毕竟能力有限做不到的地方小伙伴们也多理解。
平时我们开发接口时,Junit 单元测试是最为常用的一种开发测试手段,很多时候测试其实只看接口是否正常返回结果就 ok 了。但有时间我们要测试一些特殊场景,如:接口超时测试等,就没什么太好的办法了,而 TestNG 实现容易的多。它与 JUnit 用法十分相似,只要你用过 JUnit 分分钟上手。
大致讲一下 TestNG 的几个重要概念,@Test 注解标注的方法是最小的执行单元,我们可以将这些单个的测试用例划分成 group 分组管理,group 可以用在测试类或者方法上,suite 套件可以理解成测试类的容器。
下边我们搭建一个TestNG测试框架,结合具体案例介绍一下它的功能。
核心依赖
引入 extentreports 和 testng
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.testng
testng
7.1.0
test
com.aventstack
extentreports
3.0.6
TestNG 配置
TestNG 支持两种执行方式,第一种是用注解像 Junit 直接点方法名 run 执行。第二种配置 xml 文件的方式。@Slf4j
@Listeners({ExtentTestNGIReporterListener.class})
@SpringBootTest(classes = SpringbootTestngReportApplication.class)
public class UserTest extends AbstractTestNGSpringContextTests {
@Data
class User {
private Integer userId;
private String userName;
}
/**
* 参数提供
*/
@DataProvider(name = "paramDataProvider")
public Object[][] paramDataProvider() {
User user1 = new User();
user1.setUserId(1);
user1.setUserName("程序员内点事1");
User user2 = new User();
user2.setUserId(2);
user2.setUserName("程序员内点事2");
return new Object[][]{ {1, user1}, {2, user2}};
}
@Test(dataProvider = "paramDataProvider")
public void queryUser(Integer index, User user) {
if (index == 2) {
int a = 1 / 0;
}
log.info("index:{},user: {}", index, JSON.toJSONString(user));
Assert.assertTrue(Objects.nonNull(user));
}
}
xml 方式直接右键 .xml文件 run 就运