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

Springboot+Junit 模拟测试 Get请求

2018-09-28 10:22 337 查看
版权声明:如果觉得好的话,不防点个赞,那点你们认为不对或是需要补充,可以留言啊!本人原创,未经允许不得转载!! https://blog.csdn.net/qq_28289405/article/details/82876731

controller类里面

[code]
@RestController
public class Controller {

@Autowired
private Repository repository;

/**
* @Description  查询 表 在某段时间之内的tag的全部信息 ,访问数据库
* @Return  list
* @Param   tag (标签),  startTime (开始时间),  endTime(结束时间)
* @Date  2018.09.17 18:20
**/
@GetMapping("/find")
public List<Summary> find(String tag, Timestamp startTime, Timestamp endTime){
List<Summary> list = repository.find(tag,startTime,endTime);
return list;
}

/**
* @Description 测试 restful 不访问数据库
* @Date  2018-08-19 18:06:23
* @Return  list
* http://127.0.0.1:8090/findTest
*/
@GetMapping("/findTest")
public List<String> findTest() {
List<String> list = new ArrayList<>();
list.add("aaaa");
return list;
}
}

 JunitTest

spring的TestRestTemplate,它实现的是RestOperations接口,里面有好多方法,即get,post,put,delete。但是唯一的缺陷就是直接使用其里面的put和delete方法并没有返回值,这让我们无法用断言测试了。

       Get请求对应的是getForObject(String url, Class<T> responseType, Object... uriVariables),它直接接受一个具体的URL,以及返回的类型,接受一个Class类型的泛型,也就是XXX.class。

[code]package com.example.test.Junit;

import org.junit.Assert;
import org.junit.Test;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;

/**
* @ClassName JunitTest
* @description junit 模拟get请求
* @Author
* @Date 2018/9/27 19:06
******注解说明******
* ①、@SuppressWarnings 简介:java.lang.SuppressWarnings是J2SE5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。
*                   作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
*     @SuppressWarnings("unchecked") 告诉编译器忽略 unchecked 警告信息,如使用List,ArrayList等未进行参数化产生的警告信息
* ②、Get请求对应的是getForObject(String url, Class<T> responseType, Object... uriVariables),它直接接受一个具体的URL,以及返回的类型,
*       接受一个Class类型的泛型,也就是XXX.class。
* ③、标准输出流System.out.println和标准错误输出流System.err.println:
*      System.out.println   能重定向到别的输出流,比如输出到txt文本中, 一般性的输出用out;
*      System.err.println   只能在屏幕上实现打印,即便重定向也一样,错误使用err。
**/
public class JunitTest {

//spring的RestTemplate,它实现的是RestOperations接口,里面有好多方法,即get,post,put,delete。
private RestTemplate template = new RestTemplate();

@SuppressWarnings("unchecked")
@Test
public void test(){

//程序开始运行时间
long start = System.currentTimeMillis();

for (int i = 0; i < 1000; i++) {
//异常处理
try {
//String url = "http://localhost:" + 8090 +"/find?tag=ns=1002;s=TZ_HD_1106_SW.PV&startTime=2018-08-13 04:09:09&endTime=2018-08-13 23:59:59";
String url = "http://localhost:" + 8090 + "findTest";
ArrayList<String> result = template.getForObject(url, ArrayList.class);
//Junit的静态方法  assertTrue:判断两个值是否相等 ,如果为true,则运行success,反之Failure ; 没有错误提示
Assert.assertTrue("通过主数据的标准化编码进行查询=>测试失败", result.size()>0);
System.err.println(result);
}catch (Exception e){
e.printStackTrace();
}
}

//程序运行结束时间
long end = System.currentTimeMillis();

System.out.println("程序运行时间:" + (end - start) + "ms");
}
}

我这个代码里面包含了测试时间,但是如果你用idea进行测试的话,可以不写这个测试时间,因为 程序上自带的运行时间,不过每次都要关闭这个测试窗口,不然时间可能会累积

其中,我还遇到了个报错

返回类型不对,这里我就犯了个错,每次一看到.class 反射性的以为是那个类呢,但是在这里并不是,而是Class类型的泛型!!

 

参考:Springboot+Junit测试Http请求实例包括Get,Post,Put和Delete已及断言Assert的使用

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