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

  • 相关阅读:
    什么是递归?先了解什么是递归.
    如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用
    Android开发工具Android Studio、Android SDK和Genymotion完全配置
    自定义RatingBar评分控件
    QQ运动步数&自定义ProgressBar
    WebView动态注入JavaScript脚本
    Android IOC注解库EasyUI
    Java反射机制动态代理
    Android网络请求库RetrofitUtils
    Android MVP模式就是这么回事儿
  • 原文地址:https://www.cnblogs.com/lori/p/9946153.html
Copyright © 2020-2023  润新知