Можете ли вы или вы пишете модульные тесты в стиле Junit без объяснения, используя assertEquals, исключения проходят проверку - PullRequest
1 голос
/ 21 марта 2009

Я заметил несколько модульных тестов, например, в рамках Spring, где вы настраиваете объект и тест, но явно не используете методы assert.

По сути, у вас есть исключение или нет.

Это модульное тестирование? Это что-то, чтобы избежать? Например, вот несколько тестов из среды Spring. Нет утверждений, просто тест.

public void testNeedsJoinPoint() {
    mockCollaborator.needsJoinPoint("getAge");
    mockControl.replay();
    testBeanProxy.getAge();
    mockControl.verify();
}

Ответы [ 4 ]

4 голосов
/ 21 марта 2009

Тест, который вы показываете, полон ожиданий, но они выражены в терминах фиктивного объекта.

Некоторые тесты могут быть полностью лишены утверждений, но все равно меня устраивают, например, тест, который просто загружает контекст пружины и (неявно) подтверждает его достоверность. Я действительно думаю, что вопрос должен быть, если это - хороший тест. Иногда это может быть, а иногда это лучшее, что вы можете получить. И часто это может быть намного лучше, чем ничего.

1 голос
/ 30 мая 2009

Если вы обеспокоены, попробуйте взломать код, чтобы убедиться, что тесты эффективны.

1 голос
/ 23 марта 2009

Каждое исключение приводит к провалу теста. Таким образом, вы можете использовать свои собственные исключения, чтобы прервать свой юнит-тест.
Если вы прочитаете исходный код, assertXXX сгенерирует исключение для TestRunner. Поэтому юнит-тесты строятся на исключениях.

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

0 голосов
/ 23 марта 2009

Я называю это "тестированием дыма" и делаю это очень часто.

Это все равно что запустить свой двигатель и утверждать, что дыма нет, то есть нет исключений. Лично я считаю, что это хороший стиль (но, эй, я также парень, который продвигает зависимый тест:)

...