SpringBoot 单元测试

SpringBoot 单元测试

1、在Spring Boot 项目中Test模块建对于的测试包

 

 

 

 

2、编写测试类准备工作

编写功能测试类之前,需要先编写一个验证环境测试方法,来验证当前环境是否正常。

编写测试一般需要声明两个注解

  • SpringBootTest //带有Springboot 引导程序,可执行的web参数
  • RunWith   //告诉junit,运行Spring 支持测试库
package com.caicai.springboot.study;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/*
* SpringBoot 测试类
*
* 环境依赖与主应用配置
* */
@SpringBootTest //带有Spring Boot 的引导程序 可以执行web参数
@RunWith(SpringRunner.class)//告诉JUnit 去运行Spring 测试支持
public class SpringBootStudyTests {
    //校验当前环境是否正常
    @Test
   public void contextLoad(){


   }

}

  

3、编写正常测试方法

3.1 新建一个package 例如service

 编写正式测试类,同样 需要两个注解,@SpringBootTest @RunWith 这是不变的。 

具体实现方式,需要将想测试的功能使用@Autowired 注如当前功能类中

在每一个测试方法,前面加入@Test 注解

 

package com.caicai.springboot.study.Service;

import com.caicai.springboot.study.Async.AsyncService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

/*
* 异步服务功能测试
*
* */
@Slf4j
@SpringBootTest //带有Spring Boot 的引导程序 可以执行web参数
@RunWith(SpringRunner.class)//告诉JUnit 去运行Spring 测试支持
public class AsyncTests {
    @Autowired //自动注入,将AsyncService类注入进来
    private AsyncService asyncService;
    @Test
    public void TestAsyncService() throws InterruptedException {
       asyncService.AsyncProcess();
       log.info("Test AsynServices........");

   }

   @Test
   public void TestAsyncProcessHasReturn() throws Exception  {
      Future<Integer> result =  asyncService.AsyncProcessHasReturn();
      log.info("current start TestAsyncProcessHasReturn ......... ");
      long start = System.currentTimeMillis();
//      log.info("get Async value : {}",result.get());
       log.info("get Async value : {}",result.get(1, TimeUnit.SECONDS));//设置超时时间,如果一秒没有返回,就报异常
      log.info("time elapse for async task: {}ms",System.currentTimeMillis()-start);

   }

}

  

 

posted @ 2021-01-31 15:59  菜菜920  阅读(281)  评论(0编辑  收藏  举报