Для чего используется EasyMock.replay()?

Я новичок в модульном тестировании и Junit. Я знаю основы Junit. Я только начал изучать структуру EasyMock.

Я не мог понять использование метода replay().

Может ли кто-нибудь предоставить некоторую информацию?

Я понимаю использование EasyMock.expect() и EasyMock.verify().


person Surez    schedule 13.05.2011    source источник
comment
Я думаю, стоит упомянуть, что если вам не нравится вызывать replay() все время, вам следует попробовать Mockito там, где это не нужно.   -  person Michal    schedule 07.10.2013
comment
Это самое неприятное в этом фреймворке. Я не могу получить его в течение примерно 4-5 месяцев, пока мне не придется использовать его ежедневно.   -  person Lidjan    schedule 01.12.2017


Ответы (4)


Метод воспроизведения используется для передачи макета из записи (где вы записываете метод, который вы ожидаете вызвать) в состояние воспроизведения (где вы фактически тестируете).

person Henri    schedule 14.05.2011
comment
Спасибо за ответ user753739. имя метода должно было называться «воспроизведение» или что-то в этом роде, а не «воспроизведение». слово «воспроизведение» в данном контексте сбивает с толку. - person Surez; 15.05.2011
comment
В каком сценарии я бы не хотел вызывать replay()? (Для меня название «активировать» лучше объясняет, что я ожидаю от него.) - person Toast; 09.05.2016
comment
Действительно странное название для ожидаемого, повторного воспроизведения и проверки, но оно объяснено в моем посте. - person CuongHuyTo; 27.06.2016
comment
Это запись - › повторная метафора. Ожидание исходит из установки ожиданий. Проверка означает подтверждение того, что вы ожидали вызова. - person Henri; 08.08.2017

Вы можете запомнить это так: Когда вы пишете EasyMock.expect(abc.someMethod).andReturn(answer), вы записываете ожидаемое поведение. Но когда вы пишете EasyMock.replay(abc), вы фактически активируете его.

Я нашел этот пример очень полезным: /а>

person Anonymous    schedule 30.07.2015

С EasyMock, когда вы «ожидаете», вы на самом деле записываете желаемое фальшивое/насмешливое поведение. Поэтому, когда вы хотите внедрить это издевательское поведение в средство запуска тестов (например, JUnit), вы должны «воспроизвести» свои записи.

Странное имя по сравнению с другими насмешливыми фреймворками, лучшее имя должно быть

  • ожидать --> зарегистрироваться
  • воспроизвести -> активировать (или вообще не нужно это вызывать).
person CuongHuyTo    schedule 27.06.2016
comment
Вы правы, я вообще не вижу причин вызывать метод replay. - person vikingsteve; 28.11.2018

Как упоминалось в сообщениях выше, имя вводит в заблуждение. EasyMock.replay() активирует ожидание. Также желательно, чтобы ожидание активировалось по умолчанию после того, как мы его определим. Многие другие фреймворки, такие как Mockito, делают то же самое.

Однако я вижу один момент (возможно, я ошибаюсь), который дизайнер мог подумать, это сценарий, как показано ниже:

    TestClass testObj = EasyMock.createMock(TestClass.class);   
    expect(testObj.testMethod(testInputOne).andReturn(testOutputOne);
    expect(testObj.testMethod(testInputTwo).andReturn(testOutputTwo);
    expect(testObj.testMethod(testInputThree).andReturn(testOutputThree);
    //...
    EasyMock.replay(testObj);

Здесь мы устанавливаем разные ожидания для разных входных данных для одного и того же метода. Затем активируйте все ожидания за один раз. Framework не активирует ожидание каждый раз, когда мы его определяем.

person Dexter    schedule 07.03.2020