好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

springboot集成测试里的redis

测试不应该访问外部资源

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

redis的内嵌版本embedded-redis

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

添加依赖

?

1

2

3

4

//implementation

  'org.springframework.boot:spring-boot-starter-data-redis' ,

  //testimplementation

  'com.github.kstyrc:embedded-redis:0.6' ,

添加mock

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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();

   }

}

添加测试

?

1

2

3

4

5

6

7

8

9

10

11

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

总结

以上所述是小编给大家介绍的 springboot 集成测试里的redis,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

原文链接:http://www.cnblogs.com/lori/p/9946153.html

查看更多关于springboot集成测试里的redis的详细内容...

  阅读:22次