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