2012-01-04 2 views
1

Окружающая среда:Как продвигаться вперед со сломанной тестовой средой?

  • Java
  • Maven
  • Затмение
  • Spring
  • Jetty для developemnt
  • JUnit

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

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

Проблема в том, что тесты выполняются вручную (щелкните правой кнопкой мыши в затмении и выполняйте как тест JUnit), так как никто не собирается вручную проверять все с каждым изменением, тесты просто записываются и затем забываются.

Я привык разрабатывать все тесты с самого начала, и я хочу вернуть тестирование в полезное состояние с автоматизацией.

Как я:

  • Марк тест, чтобы не работать с причиной (например, «наследство тест должен быть обновлен» или «проходит только с сервером»).
  • Выполнение различных тестов в зависимости от того, установлен ли сервер.
  • Некоторые способ войти статистики тестирования для анализа тенденций тестирования информации (не столь важно)

Любые предложения будут полезны. Благодарю.

Обновление: вопрос был уточнен.

+1

Вопрос слишком широк.Очевидным ответом является «повторить тесты, разделить реальные модульные тесты и интеграционные тесты, требующие запуска сервера, и автоматизировать все». –

+0

, если тесты находятся в JUnit и в правильных местоположениях по умолчанию Maven должны запускать их автоматически –

ответ

2

Предполагая, что у вас есть реальная работа, с которой я буду работать, я бы посоветовал не пытаться исправить все существующие тесты, прежде чем делать что-либо еще. В любом случае @Ignore все тесты, которые не работают, поэтому вы можете работать с тестами, которые проходят в настоящее время. Возможно, попробуйте также сделать заметку для каждого неудачного теста, который вы игнорируете, чтобы вы могли повторно посетить его, когда приходите на работу в области кода, который он пытается проверить.

Если ваши тесты зависят от внешних сервисов, вы можете использовать assumeTrue(), чтобы убедиться, что они установлены до того, как они попытаются и не пройдут тест. Это будет означать, что тест игнорируется во время выполнения, поэтому вы все равно получаете построить и как можно больше полезной информации. Класс TestWatcher (если у вас есть достаточно новый JUnit) может помочь вам сделать это с минимальным шаблоном - мы настроили его игнорировать вместо отказа, если мы не можем подключиться, а затем проигнорировать любые тесты, которые впоследствии потерпят неудачу без снова выплачивая штраф за время ожидания.

+0

Мне нравится, как звучит этот ответ, и я пытаюсь это сделать. – Tiris

0

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

Смежные вопросы