Как мне издеваться над классом с помощью easymock 3.x?

#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);