//引入redisTemplate
@Resource(name = "cacheRedis")
private RedisTemplate cacheRedis;
//代码(这一行用powermock怎么写测试用例。cacheRedis.opsForValue()一直报空指针)
Object object = cacheRedis.opsForValue().get(redisKey);
//另一个这就报错:MapperException 无法获取实体类UserRisk对应的表名
Example example = new Example(UserRisk.class);
powermock ,是用来mock静态和私有方法的,你这个用普通的mock就够用,mock需要先将RedisTemplete给mock掉,然后在进行调用,把单侧的写法贴出来看看,应该是你没有吧RedisTemplete这个对象mock出来
举个例子 :
如果你需要被单侧的类是这样的:
public class DemoTe {
//引入redisTemplate
@Resource(name = "cacheRedis")
private RedisTemplate cacheRedis;
public Object demo(String redisKey){
return cacheRedis.opsForValue().get(redisKey);
}
}
那么,你的单测应该是这样的:
public class DemoTeTest {
@Mock
RedisTemplate cacheRedis;//mock需要调用的类
@InjectMocks
DemoTe demoTe;//mock本类
@Before//自动生成的方法
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testDemo() throws Exception {
//mock掉这个方法
Mockito.when(cacheRedis.opsForValue(any())).thenReturn(new Object());
//发起调用
Object result = demoTe.demo("redisKey");
//校验参数
Assert.assertEquals("replaceMeWithExpectedResult", result);
}
}