场景
若依微服务版手把手教你本地搭建环境并运行前后端项目:
若依微服务版手把手教你本地搭建环境并运行前后端项目_霸道流氓气质的博客-CSDN博客
在上面的基础上需要在某个服务模块中进行单元测试。
注:
博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主
实现
1、首先在需要进行单元测试的服务模块中引入依赖spring-boot-starter-test
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
2、新建test目录/包,包名路径与src/main/java下的根包名一致
3、在src/test/java/包名下新建测试类
测试类上添加注解
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RuoYiFzysApplication.class)
这里RuoYiFzysApplication.class是对应的启动类,如果不加则有可能提示:
you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
因为我们测试类的位置跟Springboot启动类的位置对应不上,测试类启动默认会去找Springboot的启动类,因为测试类位置改变了 所以找不到启动类。
然后如果项目中有集成的websocket则可能还会提示:
javax.websocket.server.ServerContainer not available
这是因为springbootTest启动时不会启动服务器,所以websocket就会报错,
这个时候需要在注解中添加webEnvironment,给wevsocket提供测试环境。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RuoYiFzysApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
4、然后测试类中新建测试方法
@Test
public void test1(){
Collection<String> keys = redisService.keys(CAR_CARD_REAL_TIME + "*");
}
并在测试方法上他添加注解
这里以获取redis中指定前缀开头的key为例。
如果需要引入外部依赖,则需要注入并添加注解,比如这里的redisService
@Autowired
private RedisService redisService;
5、完整的测试类
package ruoyi.fzys;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.fzys.RuoYiFzysApplication;
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.Collection;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RuoYiFzysApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ScanNoLoginEachHourTest {
@Autowired
private RedisService redisService;
public static final String CAR_CARD_REAL_TIME = "car:realTime";
@Test
public void test1(){
Collection<String> keys = redisService.keys(CAR_CARD_REAL_TIME + "*");
}
}
6、进行测试
版权归原作者 霸道流氓气质 所有, 如有侵权,请联系我们删除。