zoukankan      html  css  js  c++  java
  • springboot~集成测试里的redis

    测试不应该访问外部资源

    对于单元测试,集成测试里,如果被测试的方法中使用到了redis,你需要去模拟一个单机环境的redis server,因为只有这样,你的测试才是客观的,即不会因为网络和其它因素影响你测试的准确性!

    redis的内嵌版本embedded-redis

    它的源码在github上,大家有兴趣可以去看看,非常精简,而且还提供了单机,集群,哨兵多种redis环境,完全可以满足我们的测试需要。

    添加依赖

    //implementation
     'org.springframework.boot:spring-boot-starter-data-redis',
     
     //testImplementation
     'com.github.kstyrc:embedded-redis:0.6',
    

    添加mock

    package com.lind.springOneToOne.mock;
    
    import org.springframework.stereotype.Component;
    import redis.embedded.RedisServer;
    
    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;
    import java.io.IOException;
    
    @Component
    public class RedisServerMock {
    
        private RedisServer redisServer;
    
        /**
         * 构造方法之后执行.
         *
         * @throws IOException
         */
        @PostConstruct
        public void startRedis() throws IOException {
            redisServer = new RedisServer(6379);
            redisServer.start();
        }
    
        /**
         * 析构方法之后执行.
         */
        @PreDestroy
        public void stopRedis() {
            redisServer.stop();
        }
    }
    
    
    

    添加测试

    public class StringValueTest extends BaseTest {
    
        @Autowired
        RedisTemplate redisTemplate;
    
        @Test
        public void setTest() throws Exception {
    
            redisTemplate.opsForValue().set("ok", "test");
            System.out.println(
                    "setTest:" + redisTemplate.opsForValue().get("ok")
            );
        }
    
    }
    
    

    对于内嵌redis就说到这到,下回有机会说一下内嵌的mongodb,它也是集成测试时不能缺少的组件!

  • 相关阅读:
    修改RedHat7的root用户密码
    Linux目录,rpm及top,vi命令简记
    Centos7或RedHat7下安装Mysql
    异常、线程
    File类
    JDBC的学习(一)
    MySql多表查询_事务_DCL(资料三)
    MySql约束_设计_备份还原(资料二)
    MySql基础_DDL_DML_DQL(资料一)
    算法小结(一)
  • 原文地址:https://www.cnblogs.com/lori/p/9946153.html
Copyright © 2011-2022 走看看