我在使用嘲笑2.23.4,junit4和springrunner进行测试时遇到困难。即使代码看起来对我来说很好,我仍然会收到InvalidUseOfmatchersException。我不确定我到底缺少什么。任何提示对我都会非常有帮助。我将在下面发布代码。
@RunWith(SpringRunner.class)
public class FiscalClosingServiceImplTest {
@InjectMocks
private FiscalClosingServiceImpl fiscalClosingServiceImpl;
@Mock
private IDataBeanmanager dataBeanmanager;
@Mock
private IFiscalClosingPopulator fiscalClosingPopulator;
@Mock
private DataBean dataBean;
@Test
public void test_getFiscalClosingListByNodeIdAndSiteId_WhenListNotEmpty() throws ServiceException {
//Arrange
List<DataBean> dataBeansResult = new ArrayList<DataBean>();
dataBeansResult.add(dataBean);
when(dataBeanmanager.listBeansByAttributeValue(anyString(),anyString(),anyString())).thenReturn(dataBeansResult);
String siteId = "siteId";
FiscalClosing fiscalClosingTest = new FiscalClosing();
fiscalClosingTest.setSiteId(siteId);
when(fiscalClosingPopulator.convertBeanToFiscalClosing(any(DataBean.class))).thenReturn(fiscalClosingTest);
//act
List<FiscalClosing> result = fiscalClosingServiceImpl.getFiscalClosingListByNodeIdAndSiteId(anyString(),eq(siteId));
//Assert
assertEquals(result.get(0).getSiteId(),fiscalClosingTest.getSiteId());
}
}
下面要测试的方法:
@Override
public List<FiscalClosing> getFiscalClosingListByNodeIdAndSiteId(final String nodeId,final String siteId)
throws ServiceException {
log.debug("Retrieving FiscalClosing by transactionLastUpdatedDateTime");
List<FiscalClosing> fiscalClosingList = new ArrayList<FiscalClosing>();
List<DataBean> dataBeans = dataBeanmanager.listBeansByAttributeValue(
EntityConstant.getconstant(CONSTANTS.FISCAL_CLOSING_ID),EntityConstant.getconstant(CONSTANTS.FISCAL_CLOSING_NODE_ID_ID),nodeId,"");
if(dataBeans.isEmpty()) {
return fiscalClosingList;
}
for(DataBean dataBean : dataBeans) {
FiscalClosing fiscalClosing = fiscalClosingPopulator.convertBeanToFiscalClosing(dataBean);
fiscalClosingList.add(fiscalClosing);
}
return fiscalClosingList.stream().filter(item -> item.getSiteId().equals(siteId)).collect(Collectors.toList());
}