Привет я пытаюсь макет дао слоя мое приложение имеют некоторый класс прокат нездоровое как это Application-> parser-> дао (интерфейс) -> реализация дао классMockito класс -mocking реализации
моя проблема, когда я я насмешливый интерфейс дао или daoimp класс, используя Mockito в моем тестовом случае они не работают просто тест собирается БД, как сделать сделать наш тест, чтобы использовать эти объекты издевались
@RunWith(MockitoJUnitRunner.class)
public class CsvDataLoadServiceImplTest {
@Mock private MeteringDataDao meteringDataDao;
List<Object> persistedList;
Object meteringData;
List<Object> s=new ArrayList<Object>();
@SuppressWarnings({ "rawtypes", "unchecked" })
@Before public void setup(){
Mockito.doAnswer(new Answer<List<Object>>() {
@Override
public List<Object> answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
System.out.println("persist all");
if(persistedList == null){
persistedList = (List)args[0];
}
else
persistedList.addAll((List)args[0]);
return null;
}}).when(meteringDataDao).persistAll(anyList());
Mockito.doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
if(meteringData == null)
meteringData = (List)args[0];
return true;
}}).when(meteringDataDao).persist(anyObject());
}
@After public void tearDown(){
persistedList = null;
meteringData = null;
}
@Test
public void testDataAccuricy(){
CsvDataLoadService csvDataLoadService =new CsvDataLoadServiceImpl();
csvDataLoadService.loadRackspaceCsvData();
}
}
Если вы не можете изменить тестируемой системы, вы можете попробовать использовать [один из этих методов] (http://stackoverflow.com/a/27552765/1426891) чтобы получить ваш макет в ваш класс. –