我正在尝试实现 Mockito 来测试特定方法,但 .thenReturn(null) 似乎没有返回 null 值。
@RunWith(PowerMockRunner.class)
@PrepareForTest({ ValidationServiceImpl.class})
public class ValidationServiceTest {
@Test
public void testGetProdList() throws Exception{
IValidationDao validationDao = Mockito.mock(ValidationDaoImpl.class);
IValidationService validationService = Mockito.mock(ValidationServiceImpl.class);
ReflectionTestUtils.setField(validationService, "validationDao", validationDao);
List<ProductDetailsBean> prodGroups = new ArrayList<ProductDetailsBean>();
for (int i = 0; i < 145; i++)
prodGroups.add(new ProductDetailsBean());
Mockito.when(validationDao.getProdList(12345)).thenReturn(prodGroups);
assertNotEquals(null, validationService.getProdList(12345));
}
@Test
public void testGetProdListwithNullTest() throws Exception{
IValidationDao validationDao = Mockito.mock(ValidationDaoImpl.class);
IValidationService validationService = Mockito.mock(ValidationServiceImpl.class);
ReflectionTestUtils.setField(validationService, "validationDao", validationDao);
Mockito.when(validationDao.getProdList(11111)).thenReturn(null);
assertEquals(null, validationService.getProdList(11111));
}
}
我的第一个测试用例工作正常,第二个测试用例失败了..
堆栈跟踪:
java.lang.AssertionError: expected:<null> but was:<[]>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:743)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:144)
at uk.co.argos.pst.test.sevices.ValidationServiceTest.testGetProdListwithNullTest(ValidationServiceTest.java:53)
请帮助我解决我做错的地方。
最佳答案
您正在模拟 ValidationServiceImpl
,因此它返回 getProdList
的默认模拟值,这是一个空列表。您的底层模拟 IValidationDao
从未真正被调用。
您可以模拟调用:
Mockito.when(validationService.getProdList(11111)).thenReturn(null);
但是您没有测试任何代码。
使用真正的ValidationServiceImpl
。而不是 mock :
IValidationService validationService = Mockito.mock(ValidationServiceImpl.class);
ReflectionTestUtils.setField(validationService, "validationDao", validationDao);
构造一个真实的实例:
IValidationService validationService = new ValidationServiceImpl();
validationService.setValidationDao(validationDao);
关于java - 当我返回 null 时,assertEquals 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31268931/