Springboot+Junit 模拟测试 Get请求

版权声明:如果觉得好的话,不防点个赞,那点你们认为不对或是需要补充,可以留言啊!本人原创,未经允许不得转载!! 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的使用

猜你喜欢

转载自blog.csdn.net/qq_28289405/article/details/82876731