spring-boot编写测试用例测试restful接口

spring-boot中测试restful接口非常方便,通过使用@SpringBootTest、@RunWith两个注解及TestRestTemplate 就可以快速的实现。
1.编写BaseTest

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class BaseTest {
	public static final Logger logger= LoggerFactory.getLogger(BaseTest.class);
	@Autowired
	protected TestRestTemplate template;
	protected URL base;
	// 
	@LocalServerPort
	protected int port;
	protected HttpHeaders httpHeaders=new HttpHeaders();
	protected String token="10544addb5854f76993d7b6e07ffbc0c";
	protected Map<String,Object> queryParams=new HashMap<>();
	public BaseTest() {

	}

	@Before
	public void before() throws MalformedURLException {
		queryParams.put("token",token);
		// 验证 token 是否有效
		String url=String.format("http://localhost:%d/spring-boot-demo/",port);
		this.base=new URL(url);
		httpHeaders.set("token",token);
	}

	protected UriComponentsBuilder uriComponentsBuilder(String urlPath,Map<String,Object> queryParamMap) {
		StringBuilder urlBuilder=new StringBuilder(base.toString());
		urlBuilder.append(urlPath);
		UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(urlBuilder.toString());
		if (queryParamMap!= null && !queryParamMap.isEmpty()) {
			queryParamMap.entrySet().stream().forEach(entry -> {
				builder.queryParam(entry.getKey(), entry.getValue());
			});
		}
		return builder;
	}

	protected <T> void test(UriComponentsBuilder builder, HttpMethod httpMethod, T body, Logger logger) {
		HttpEntity httpEntity=null;
		if (body!= null) {
			httpEntity = new HttpEntity(body,httpHeaders);
		}else {
			httpEntity = new HttpEntity(httpHeaders);
		}
		ResponseEntity<WebResponseResult> responseEntity=template.exchange(builder.build().encode().toUri(), httpMethod,httpEntity,WebResponseResult.class);
		WebResponseResult webResponseResult=responseEntity.getBody();
		Assert.assertEquals(200,webResponseResult.getMessage().getCode());
		logger.info("resposne data is "+JSON.toJSONString(webResponseResult));
	}
}

2.编写用户测试类

public class UserControllerTests  extends BaseTest{
	public static final Logger logger= LoggerFactory.getLogger(UserControllerTests.class);
    @Test
	public void findUserDetailByUserName() throws URISyntaxException {
	  UriComponentsBuilder builder = uriComponentsBuilder("users/detail",new HashMap<>());
		test(builder,HttpMethod.GET,null,logger);
	}
}

运行测试用例
在这里插入图片描述

发布了78 篇原创文章 · 获赞 20 · 访问量 43万+

猜你喜欢

转载自blog.csdn.net/tangyajun_168/article/details/103498351