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

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 若依微服务版(SpringBoot/SpringCloudAlibaba)中在单个服务模块中进行单元测试,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

场景

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

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

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

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、进行测试

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135830.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!