若依微服务版(SpringBoot/SpringCloudAlibaba)中在单个服务模块中进行单元测试

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

场景

若依微服务版手把手教你本地搭建环境并运行前后端项目

若依微服务版手把手教你本地搭建环境并运行前后端项目_霸道流氓气质的博客-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、进行测试

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Spring