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!");
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM