#java #unit-testing #testing #easymock
#java #модульное тестирование #тестирование #easymock
Вопрос:
Итак, у меня есть следующий импорт в моем классе:
import static org.easymock.classextension.EasyMock.*;
Итак, я создаю реальный объект
SomeJobDataMap map = SomeJobDataMap();
map.put(Constant.SOMETHING,"somevalue");
map.put(Constant.SOMETHING_ELSE,"anothervalue")
Затем я создаю макет:
SomeJobContext context = createMock(SomeJobContext.class);
expect(context.getJobDataMap()).andReturn(map);
воспроизведение (контекст);
testTargetClass.methodUnderTest(context);
… никаких ошибок, кроме NPE, которые возникают, когда «methodUnderTest» пытается получить доступ к значениям. Почему мой макет не возвращает карту?
Комментарии:
1. попробуйте добавить
verify
и убедитесь, что вы издевались над правильным методом (т. Е. Он вызывается в потоке)
Ответ №1:
Я предполагаю, что ваш тестируемый класс сотрудничает с вашим классом SomeJobContext. В этом случае вам нужно вызвать testTargetClass.setContext(контекст).
Комментарии:
1. Это было довольно давно, но, насколько я помню, я забыл вызвать replay();
Ответ №2:
Может быть, вы забыли настроить количество раз, когда тест ожидает, что метод будет вызван?
SomeJobContext context = createMock(SomeJobContext.class);
expect(context.getJobDataMap()).andReturn(map).once();
replay(context);
testTargetClass.methodUnderTest(context);