JMock assertУдовлетворены ли вы в TearDown? - PullRequest
6 голосов
/ 08 июля 2011

Я не знаю почему, но я всегда писал свои тесты JMock следующим образом:

@Test
public void testMyThing() throws Exception {
    mockery.checking(new Expectations() {{
        oneOf(mockObj).foo();
    }});
    testObj.bar(); // calls mockObj.foo()
    mockery.assertIsSatisfied();
}

Но когда тестов много, лучше перейти assertIsSatisfied к демонтажу?

@After
public void tearDown() throws Exception {
    mockery.assertIsSatisfied();
}

Ответы [ 2 ]

5 голосов
/ 24 августа 2011

Рекомендуемый способ сделать это - использовать JMock Runner. Аннотируйте класс с помощью

@RunWith(JMock.class)
public class TestClass {

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

У нас также есть правило издевательства в хранилище, которое работает с новой инфраструктурой @Rule.

0 голосов
/ 08 июля 2011

Да, я склонен делать это в разборках.Он фокусирует внимание отдельных методов испытаний на том, что они на самом деле тестируют, вынимая шаблон в @After - для меня очень важно, чтобы тесты были максимально выразительными и читабельными.Иногда я беру это дальше, и использую базовый класс JMockSupport, который обрабатывает Mockery для меня (а также предоставляет удобные реализации mock(...)).Конечно, это просто удобство и ни в коем случае не требование, как в JUnit 3.

...