您的位置:首页 > 编程语言 > Java开发

Spring Boot测试相关设置

2017-11-01 00:00 239 查看

进行测试中专用的配置

有时候在测试中,我们需要对某些接口进行专门的配置,可以通过下面的注解实现:

@TestConfiguration

这个注解可以:

补充额外的Bean

覆盖已存在的Bean

注意@Configuration并不会覆盖已存在的Bean。如果同一个接口有两个不同的实现类,需要用@Qualifier指定实现类。而@TestConfiguration会直接覆盖实现类

所以需要将这个注解标注的类放在
test
文件夹下,和其他代码隔离开

@SpringBootTest

需要在测试类上加上这个注解,声明要使用的配置类,包括@SpringBootApplication标注的类和使用@TestConfiguration标注的类

例如:

/**
* Created by pierre_cai on 2017/10/31.
* 配置测试的专用类
*/
@TestConfiguration
public class TestConfigs {
/**
* 覆盖项目中原有的BaseReqService接口实现
* @return
*/
@Bean
public BaseReqService baseReqService(){
return new BaseReqService() {
@Override
public TokenBearer getTokenBearer() {
TokenBearer tokenBearer = new TokenBearer();
tokenBearer.setUserId(1);
tokenBearer.setSectionId(1);
tokenBearer.setCompanyId(1);
return tokenBearer;
}

@Override
public List<Role> getRoles() {
List<Role> roles = new ArrayList<>();
roles.add(Role.ROLE_ADMIN);
roles.add(Role.ROLE_USER);
return roles;
}

@Override
public Integer getCompanyId(BaseReq req) {
return 1;
}
};
}
}


使用RestTemplate对RestFul接口进行测试

类上主要使用的注解有:

@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes = WebPortalApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

@ActiveProfiles("test")

@Rollback

属性、方法上使用的注解:

@LocalServerPort

@Test

主要使用的类:

HttpHeader

HttpEntity

RestTemplate

/**
* Created by pierre_cai on 2017/9/28.
*/
// 指定使用JUnit4测试
@RunWith(SpringJUnit4ClassRunner.class)
// 指定使用的配置类,包括程序入口和test专用的配置类,并指定使用随机接口
@SpringBootTest(classes = {WebPortalApplication.class,TestConfig.class},webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
// 指定使用的配置文件为application-test.yaml
@ActiveProfiles("test")
// 说明方法测试中所有对数据库的操作都要回滚
@Rollback
public class CompanyControllerTest {

//使用随机接口,避免接口被占用导致测试无法进行
@LocalServerPort
private int port;
//用于快速获取REST请求返回的对象
@Autowired
private TestRestTemplate restTemplate;

@Test
public void getCompanyList() throws Exception {
QueryCompanyReq req = new QueryCompanyReq();
req.setCompanyName("公司名");
// 可以通过HttpHeaders类修改请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<String&
3ff8
gt; formEntity = new HttpEntity<>(JSON.toJSONString(req), headers);
String forObject = this.restTemplate
// 如果项目中使用Spring Security,可以让请求带上验证信息
// 如果没有则不需要
//.withBasicAuth("userName","password")
// 发送post请求
.postForObject("http://localhost:" + port + "/api/company/getCompanyList",formEntity, String.class);
System.out.println(forObject);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring Boot 测试