我们在公司里,接手了别人的项目,面对项目里用到redis的部分,很多时候,我们只是想测一下redis是否能连通,或者key是否有值。我们不想启动一堆东西。

此文是使用jedis来测试。配置写在xml配置文件里。

代码如下:

单元测试 v1.0

目录结构

xx-service

├── src

│ ├── main

│ │ ├── java

│ │ └── resources

│ ├── test

│ │ ├── java

│ │ └── resources

单元测试都放在 test 目录下。

1. java类

java文件放在 /src/test/java 下,在该目录下创建package

import org.junit.runner.RunWith;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)//表示整合JUnit4进行测试

@ContextConfiguration(locations={"classpath:applicationContext-redis.xml"})//加载spring配置文件

public class BaseRedisTest {

@Autowired

private JedisPool jedisPool;

@Test

public void t1() {

String time = "2023-08-24";

String key = "queryEmps:"+"_"+time;

Jedis jedis = jedisPool.getResource();

String value = jedis.get(key);

System.out.println(value);

}

}

@RunWith(SpringRunner.class) 是 spring+junit整合。

@ContextConfiguration(locations={"classpath:applicationContext-redis.xml"}) 是指定bean的配置文件位置。这样就可以把redis的配置写在配置文件里,方便从原项目里直接copy。

2. applicationContext-redis.xml

xml文件放在 /src/test/resources 下。

redis无密码的配置 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

redis有密码的配置

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

3. pom.xml

版本号随意。不过2.4版本之后和之前,配置里会有字段变化。

redis.clients

jedis

3.3.0

test

这样就可以连通redis,并且对redis做增删改查了。 

单元测试 v2.0

在 v1.0 的基础上,对java类做了优化。提取出一个父类,将注解等配置放在这个父类里。子类专注于写业务代码。

代码如下:

import org.junit.runner.RunWith;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)

@ContextConfiguration(locations={"classpath:applicationContext-redis.xml"})

public class BaseRedisTest {

@Autowired

protected JedisPool jedisPool;

}

import org.junit.Test;

public class T1 extends BaseRedisTest {

@Test

public void get(){

String time = "2023-08-24";

String key = "queryEmps"+"_"+time;

Jedis jedis = jedisPool.getResource();

String value = jedis.get(key);

System.out.println(value);

}

}

单元测试 v3.0

在v2.0的基础上,对java类再做优化。这一次的优化主要是针对 jedisPool。我们需要对 jedisPool 做一层封装,方便我们使用,这也起到隔离防腐作用。

写个接口,取名为 JedisClient

public interface JedisClient {

String set(String key, String value);

String get(String key);

Boolean exists(String key);

Long expire(String key, int seconds);

Long ttl(String key);

Long incr(String key);

Long hset(String key, String field, String value);

String hget(String key, String field);

Long hdel(String key, String... field);

Boolean hexists(String key, String field);

List hvals(String key);

Long hincrby(String key,String field,Long value);

Long del(String key);

}

写个实现类,取名为 JedisClientPool,封装JedisPool

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import java.util.List;

public class JedisClientPool implements JedisClient {

private JedisPool jedisPool;

public JedisPool getJedisPool() {

return jedisPool;

}

public void setJedisPool(JedisPool jedisPool) {

this.jedisPool = jedisPool;

}

public String set(String key, String value) {

Jedis jedis = jedisPool.getResource();

String result = jedis.set(key, value);

jedis.close();

return result;

}

public String get(String key) {

Jedis jedis = jedisPool.getResource();

String result = jedis.get(key);

jedis.close();

return result;

}

public Boolean exists(String key) {

Jedis jedis = jedisPool.getResource();

Boolean result = jedis.exists(key);

jedis.close();

return result;

}

public Long expire(String key, int seconds) {

Jedis jedis = jedisPool.getResource();

Long result = jedis.expire(key, seconds);

jedis.close();

return result;

}

public Long ttl(String key) {

Jedis jedis = jedisPool.getResource();

Long result = jedis.ttl(key);

jedis.close();

return result;

}

public Long incr(String key) {

Jedis jedis = jedisPool.getResource();

Long result = jedis.incr(key);

jedis.close();

return result;

}

public Long hset(String key, String field, String value) {

Jedis jedis = jedisPool.getResource();

Long result = jedis.hset(key, field, value);

jedis.close();

return result;

}

public String hget(String key, String field) {

Jedis jedis = jedisPool.getResource();

String result = jedis.hget(key, field);

jedis.close();

return result;

}

public Long hdel(String key, String... field) {

Jedis jedis = jedisPool.getResource();

Long result = jedis.hdel(key, field);

jedis.close();

return result;

}

public Boolean hexists(String key, String field) {

Jedis jedis = jedisPool.getResource();

Boolean result = jedis.hexists(key, field);

jedis.close();

return result;

}

public List hvals(String key) {

Jedis jedis = jedisPool.getResource();

List result = jedis.hvals(key);

jedis.close();

return result;

}

public Long del(String key) {

Jedis jedis = jedisPool.getResource();

Long result = jedis.del(key);

jedis.close();

return result;

}

public Long hincrby(String key,String field,Long value) {

Jedis jedis = jedisPool.getResource();

Long result = jedis.hincrBy(key, field, value);

jedis.close();

return result;

}

}

配置文件 applicationContext-redis.xml 需要添加 JedisClientPool 的 bean,如下:

 添加完以后,整个文件内容如下:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

在测试类的父类里,使用自己写的 JedisClient 这个接口(之前用的是 jedis 自己的 JedisPool),通过注解 @Autowired 将实现类 JedisClientPool 注入。

import org.junit.runner.RunWith;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)

@ContextConfiguration(locations={"classpath:applicationContext-redis.xml"})

public class BaseRedisTest {

@Autowired

protected JedisClient jedisClient;

}

在测试类的子类里,使用自己写的 JedisClient 对 redis 进行增删改查。

import org.junit.Test;

public class T1 extends BaseRedisTest {

@Test

public void get(){

String time = "2023-08-24";

String key = "queryEmpStatistics"+"_"+time;

String value = jedisClient.get(key);

System.out.println(value);

}

}

JedisClient操作redis 单机版和集群版

redis设置密码以及jedisPool设置密码_泼墨画丹青的博客-CSDN博客

=====================分割线======================== 

文章到此已经结束,以下是紫薯布丁

import org.junit.Test;   public class Tt1 extends BaseRedis {

    @Test     public void get(){         String time = "2023-08-25";         String key = "queryEmpStatistics"+"_"+time;

        String value = jedisClient.get(key);         System.out.println(value);     } }

import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class) @ContextConfiguration(locations={"classpath:applicationContext-redis.xml"}) public class BaseRedisTest {     @Autowired     protected JedisClient jedisClient;

}  

                       

                                                                                                   

import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool;

import java.util.List;

public class JedisClientPool implements JedisClient {

    private JedisPool jedisPool;       public JedisPool getJedisPool() {         return jedisPool;     }

    public void setJedisPool(JedisPool jedisPool) {         this.jedisPool = jedisPool;     }            public String set(String key, String value) {         Jedis jedis = jedisPool.getResource();         String result = jedis.set(key, value);         jedis.close();         return result;     }            public String get(String key) {         Jedis jedis = jedisPool.getResource();         String result = jedis.get(key);         jedis.close();         return result;     }            public Boolean exists(String key) {         Jedis jedis = jedisPool.getResource();         Boolean result = jedis.exists(key);         jedis.close();         return result;     }            public Long expire(String key, int seconds) {         Jedis jedis = jedisPool.getResource();         Long result = jedis.expire(key, seconds);         jedis.close();         return result;     }            public Long ttl(String key) {         Jedis jedis = jedisPool.getResource();         Long result = jedis.ttl(key);         jedis.close();         return result;     }            public Long incr(String key) {         Jedis jedis = jedisPool.getResource();         Long result = jedis.incr(key);         jedis.close();         return result;     }            public Long hset(String key, String field, String value) {         Jedis jedis = jedisPool.getResource();         Long result = jedis.hset(key, field, value);         jedis.close();         return result;     }            public String hget(String key, String field) {         Jedis jedis = jedisPool.getResource();         String result = jedis.hget(key, field);         jedis.close();         return result;     }            public Long hdel(String key, String... field) {         Jedis jedis = jedisPool.getResource();         Long result = jedis.hdel(key, field);         jedis.close();         return result;     }            public Boolean hexists(String key, String field) {         Jedis jedis = jedisPool.getResource();         Boolean result = jedis.hexists(key, field);         jedis.close();         return result;     }            public List hval(String key) {         Jedis jedis = jedisPool.getResource();         List result = jedis.hvals(key);         jedis.close();         return result;     }         public Long del(String key) {         Jedis jedis = jedisPool.getResource();         Long result = jedis.del(key);         jedis.close();         return result;     }         public Long hincr(String key,String field,Long value) {         Jedis jedis = jedisPool.getResource();         Long result = jedis.hincrBy(key, field, value);         jedis.close();         return result;     }   }

public interface JedisClient {   .....     Boolean exists(String key);     Long expire(String key, int seconds);     Long ttl(String key);

......     Long incr(String key);     Long hset(String key, String f, String value);     String hget(String key, String f);     Long hdel(String key, String... f);     Boolean hexists(String key, String f);

.....     List hvals(String key);     Long hincrby(String key,String field,Long value);     Long del(String key);

    String set(String key, String value);     String get(String key) }

                    redis.clients             jedis             3.2.0             test         xx-service ├── src │   ├── main │   │   ├── java │   │   └── resources │   ├── test │   │   ├── java │   │   └── resources  

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: