无法模拟@Autowired 对象
Failing to mock @Autowired Object
我将 Junit4 和 Mockito 用于测试用例,在下面的代码中,我试图模拟一个自动装配对象,该对象在模拟中抛出空指针异常class,这意味着自动装配对象没有正确模拟
ContentDao.java
public class ContentDao {
@Autowired
private ConfigProperties configProperties;
public void fuction() {
int batchSize = configProperties.getBatchSize();
}
ConfigProperties.java
@ConfigurationProperties(ignoreUnknownFields = false, prefix = "cleanup")
public class ConfigProperties {
private int batchSize;
public int getBatchSize() {
return batchSize;
}
}
正在尝试模拟 ConfigProperties。
@RunWith(MockitoJUnitRunner.class)
public class ContentDaoTest{
@InjectMocks
private ContentDao contentDao;
@Mock
private ConfigProperties configProperties;
@Test
public void functionTest(){
configProperties = mock(ConfigProperties.class);
when(configProperties.getBatchSize()).thenReturn(100);
ContentDao contentDao = new ContentDao();
contentDao.funtion();
}
调用了函数,但我在下面的行中得到了 NPE。请帮助我被困在这里。
int batchSize = configProperties.getBatchSize();
如果您为 configProperties 设置 @Mock
,则不应再次模拟 configProperties = mock(ConfigProperties.class);
同样的想法,当你为 contentDao 设置 @InjectMocks
时,你不应该实例化一个新的 contentDao。
@RunWith(MockitoJUnitRunner.class)
public class ContentDaoTest {
@InjectMocks
private ContentDao contentDao;
@Mock
private ConfigProperties configProperties;
@Test
public void functionTest() {
Mockito.when(configProperties.getBatchSize()).thenReturn(100);
Assertions.assertThat(contentDao.getBatchSize()).isEqualTo(100);
}
}
我将 Junit4 和 Mockito 用于测试用例,在下面的代码中,我试图模拟一个自动装配对象,该对象在模拟中抛出空指针异常class,这意味着自动装配对象没有正确模拟
ContentDao.java
public class ContentDao {
@Autowired
private ConfigProperties configProperties;
public void fuction() {
int batchSize = configProperties.getBatchSize();
}
ConfigProperties.java
@ConfigurationProperties(ignoreUnknownFields = false, prefix = "cleanup")
public class ConfigProperties {
private int batchSize;
public int getBatchSize() {
return batchSize;
}
}
正在尝试模拟 ConfigProperties。
@RunWith(MockitoJUnitRunner.class)
public class ContentDaoTest{
@InjectMocks
private ContentDao contentDao;
@Mock
private ConfigProperties configProperties;
@Test
public void functionTest(){
configProperties = mock(ConfigProperties.class);
when(configProperties.getBatchSize()).thenReturn(100);
ContentDao contentDao = new ContentDao();
contentDao.funtion();
}
调用了函数,但我在下面的行中得到了 NPE。请帮助我被困在这里。
int batchSize = configProperties.getBatchSize();
如果您为 configProperties 设置 @Mock
,则不应再次模拟 configProperties = mock(ConfigProperties.class);
同样的想法,当你为 contentDao 设置 @InjectMocks
时,你不应该实例化一个新的 contentDao。
@RunWith(MockitoJUnitRunner.class)
public class ContentDaoTest {
@InjectMocks
private ContentDao contentDao;
@Mock
private ConfigProperties configProperties;
@Test
public void functionTest() {
Mockito.when(configProperties.getBatchSize()).thenReturn(100);
Assertions.assertThat(contentDao.getBatchSize()).isEqualTo(100);
}
}