mockito+testng Mock Redis
package yy.xx.redis;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
@Repository
public class RedisDAO {
private static final Logger logger = Logger.getLogger(RedisDAO.class);
private JedisPool jedisPool;
public JedisPool getJedisPool() {
return jedisPool;
}
public void setJedisPool(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
public Jedis getClient() {
Jedis redisClient = jedisPool.getResource();
if(redisClient == null){
return redisClient;
}
if (!redisClient.isConnected()) {
redisClient.connect();
logger.debug("redisClient is on connect");
}
return redisClient;
}
public void closeClient(Jedis client) {
if (client != null)
jedisPool.returnResource(client);
logger.debug("redisClient is return resource");
}
}
package yy.xx.redis;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.testng.Assert;
import org.testng.annotations.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class RedisDAOTest {
@InjectMocks//有实际方法调用时用,比如set了想看GET
private RedisDAO dao;
private final Jedis redisClient = Mockito.mock(Jedis.class);
private final JedisPool jedisPool = Mockito.mock(JedisPool.class);
@Test
public void test() {
MockitoAnnotations.initMocks(this);
Assert.assertNotNull(dao);
dao.setJedisPool(jedisPool);
Assert.assertNotNull(dao.getJedisPool());
Mockito.when(dao.getClient()).thenReturn(redisClient);
Assert.assertNotNull(dao.getClient());
dao.closeClient(redisClient);
}
}