Когда мы должны использовать Осмеяние по сравнению с JUnit4Mockery?

Если запись модульного теста Java с насмешкой использования JMock, должна мы использовать

Mockery context = new Mockery()

или

Mockery context = new JUnit4Mockery()

Каково различие между этими двумя, и когда мы должны использовать который?

11
задан Abimaran Kugathasan 24 September 2013 в 05:45
поделиться

2 ответа

@Rhys Это не JUnit4Mockery , который заменяет необходимость вызова assertIsSatisfied , это JMock.class (в сочетании с @RunWith ). Вам не нужно вызывать assertIsSatisfied при создании обычного Mockery .

JUnit4Mockery переводит ошибки.

По умолчанию, ожидаемые исключения сообщаются в Junit как ExpectationError , поэтому, например, используя

Mockery context = new Mockery();

, вы получите

unexpected invocation: bar.bar()
no expectations specified: did you...
 - forget to start an expectation with a cardinality clause?
 - call a mocked method to specify the parameter of an expectation?

, а используя

Mockery context = new JUnit4Mockery();

, вы получите

java.lang.AssertionError: unexpected invocation: bar.bar()
no expectations specified: did you...
 - forget to start an expectation with a cardinality clause?
 - call a mocked method to specify the parameter of an expectation?
what happened before this: nothing!

JUnit4Mockery преобразовал ExpectationError в java.lang.AssertionError, с которым имеет дело JUnit. В результате в отчете JUnit он будет отображаться как сбой (с использованием JUnit4Mockery), а не как ошибка .

9
ответ дан 3 December 2019 в 10:03
поделиться

При использовании JMock с JUnit 4 вы можете избежать шаблонного кода, взяв преимущество средства запуска тестов JMock. При этом вы должны использовать JUnit4Mockery вместо обычного Mockery.

Вот как вы структурируете тест JUnit 4:

@RunWith(JMock.class)
public void SomeTest() {
  Mockery context = new JUnit4Mockery();

}

Основное преимущество состоит в том, что нет необходимости вызывать assertIsSatisfied в каждом тесте, он вызывается автоматически после каждого теста.

1
ответ дан 3 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: