版权声明:如果觉得好的话,不防点个赞,那点你们认为不对或是需要补充,可以留言啊!本人原创,未经允许不得转载!! https://blog.csdn.net/qq_28289405/article/details/82876731
controller类里面
@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。
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的使用