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,它也是集成测试时不能缺少的组件!

  • 相关阅读:
    接口 抽象类 小记
    java 强制转换
    java 多态
    this super 解释
    Java多态性理解
    final与static
    java动态联编
    什么是继承
    JAVA的覆盖、继承和多态的详细解说.this和super的用法
    java继承覆盖总结
  • 原文地址:https://www.cnblogs.com/lori/p/9946153.html
Copyright © 2011-2022 走看看