我们在公司里,接手了别人的项目,面对项目里用到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-25";
		String key = "queryEmpStatistics:"+"-"+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无密码的配置 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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单机 -->
    <bean class="redis.clients.jedis.JedisPool" id="jedisPool" >
        <constructor-arg name="host" value="192.168.10.1"></constructor-arg>
        <constructor-arg name="port" value="6379"></constructor-arg>
    </bean>


    <!-- redis集群 -->

</beans>

redis有密码的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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单机 -->
    <bean class="redis.clients.jedis.JedisPool" id="jedisPool" >
        <constructor-arg name="host" value="192.168.10.1"></constructor-arg>
        <constructor-arg name="port" value="6379"></constructor-arg>
        <constructor-arg name="password" value="xxx"></constructor-arg>
        <constructor-arg name="timeout" value="3000"></constructor-arg>
        <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>
    </bean>
    <bean class="redis.clients.jedis.JedisPoolConfig" id="jedisPoolConfig">
        <property name="maxIdle" value="300" />
        <property name="maxTotal" value="1000" />
        <property name="maxWaitMillis" value="1000" />
        <property name="testOnBorrow" value="false" />
        <property name="blockWhenExhausted" value="false" />
    </bean>
</beans>

3. pom.xml

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

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.3.0</version>
            <scope>test</scope>
        </dependency>

这样就可以连通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-25";
		String key = "queryEmpStatistics"+"_"+time;

        Jedis jedis = jedisPool.getResource();
		String value = jedis.get(key);
		System.out.println(value);
	}

}
08-25 18:36