现象:
最近在使用Mock对象做单元测试,但是发现mock的对象始终为null.
代码如下:
package com.****.cache;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.core.env.Environment;
@RunWith(MockitoJUnitRunner.class)
public class ConfigCacheTest {
@Mock
private Environment environment;
@Test
public void test_initcache(){
String []envArray = new String[]{"dev"};
}
}
通过debug模式,我们可以发现environment对象没有mock进去。
原因:
@Test导包有问题。我之前使用的是这个:
import org.junit.jupiter.api.Test; 但是当我换成下面这个就可以了。 import org.junit.Test;
修改后代码:
package com.*****.cache;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.core.env.Environment;
@RunWith(MockitoJUnitRunner.class)
public class ConfigCacheTest {
@Mock
private Environment environment;
@Test
public void test_initcache(){
String []envArray = new String[]{"dev"};
}
}
通过debug模式可以看到对象正常mock出来了。