现象:
最近在使用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 {@Mockprivate Environment environment;@Testpublic 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 {@Mockprivate Environment environment;@Testpublic void test_initcache(){String []envArray = new String[]{"dev"};}}
通过debug模式可以看到对象正常mock出来了。