目录
4、接下来就可以使用testng的xml配置case的执行了!
一、背景
spring boot test很好地集成了junit的测试框架,但是当测试case越来越庞大、组合越来越复杂时,需要集成testng更好的组织测试case集合。
二、testng和junit的主要区别
2.1 testng和junit不同之处
2.1.1 junit的测试类:
package org.maggiezhang.springbootdemo.dao.mapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.maggiezhang.springbootdemo.StartApp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import javax.annotation.Resource;
import javax.sql.DataSource;
@SpringBootTest(classes = StartApp.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@Slf4j
public class TestDataSource {
@Resource
private DataSource dataSource;
@Autowired
private CouponMapper couponMapper;
@Test
public void testConnection(){
System.out.println(this.dataSource);
}
@Test
public void testMapper(){
System.out.println(couponMapper);
log.trace("trace");
log.info("info");
log.warn("warn");
log.error("error");
log.debug("debug");
//couponMapper.queryByLoanBillId(1l);
}
}
2.1.2 testng的测试类:
package org.maggiezhang.springbootdemo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.test.context.web.WebAppConfiguration;
import org.testng.annotations.Test;
@SpringBootTest(classes = StartApp.class)
@WebAppConfiguration
@Slf4j
public class CaseBase extends AbstractTestNGSpringContextTests {
public CaseBase() {
}
@Test
public void test(){
//couponMapper.queryByLoanBillId(1l);
System.out.println("test....");
logger.info("test from logger...");
}
}
2.2 testng的优势
- 注解
- TestNG 使用 Java 和面向对象的功能
- 支持综合类测试(例如,默认情况下,不用创建一个新的测试每个测试方法的类的实例)
- 独立的编译时测试代码和运行时配置/数据信息
- 灵活的运行时配置
- 主要介绍“测试组”。当编译测试,只要要求 TestNG 运行所有的“前端”的测试,或“快”,“慢”,“数据库”等
- 支持依赖测试方法,并行测试,负载测试,局部故障
- 灵活的插件 API
- 支持多线程测试
来自 https://www.yiibai.com/testng/
三、在spring boot框架项目中集成testng
1、在pom文件中加入testng依赖
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
</dependency>
2、生成一个所有cast类的父类
package org.maggiezhang.springbootdemo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.test.context.web.WebAppConfiguration;
@SpringBootTest(classes = StartApp.class)
@WebAppConfiguration
@Slf4j
public class CaseBase extends AbstractTestNGSpringContextTests {
public CaseBase() {
}
}
3、实际的case操作类
package org.maggiezhang.springbootdemo.dao.mapper;
import org.maggiezhang.springbootdemo.CaseBase;
import org.springframework.beans.factory.annotation.Autowired;
import org.testng.annotations.Test;
public class TestCouponMapper extends CaseBase {
@Autowired
CouponMapper couponMapper;
@Test
public void test(){
//couponMapper.queryByLoanBillId(1l);
System.out.println("test....");
System.out.println(couponMapper);
logger.info("test from logger...");
}
}