embedded-redis在单元测试中的使用

1 背景

参考链接:https://github.com/kstyrc/embedded-redis

2 使用

2.1 引入依赖

        <dependency>
            <groupId>com.github.kstyrc</groupId>
            <artifactId>embedded-redis</artifactId>
            <version>0.6</version>
        </dependency>        

2.2 单元测试中的使用

可以直接通过两行代码就可以启动:

redisServer = new RedisServer(6379);
redisServer.start();
// do something
redisServer.stop();

3 遇到的问题以及解决思路

一般我们在写单元测试的时候,会在一个测试类中写很多的测试方法。那么我们一般会选择在@Before方法中启动RedisServer,在@After方法中进行close。

但是redis是单线程的,每一个@Test方法都会调用一次@After方法,把redis-server关掉了,所以你可能会碰到下面的错误:

这里有一个解决思路,把@Before改成@BeforeClass,@After改成@AfterClass,并且把方法改成静态的。

    private static RedisServer redisServer;

    @BeforeClass
    public static void beforeClass() throws Exception {
        redisServer = new RedisServer(6379);
        redisServer.start();
    }

    @Test
………………
    @Test

    @AfterClass
    public static void afterClass() {
        redisServer.stop();
        log.info("Embedded redis stop!");
    }
原文地址:https://www.cnblogs.com/sonofelice/p/8931955.html