Junit: расщепление интеграционного теста и юнит-тесты

Я унаследовал нагрузку теста Junit, но эти тесты (кроме большинства не работающих) представляют собой смесь реальных модульных тестов и интеграционных тестов (требующих внешних систем, БД и т. Д.).

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

Варианты ..

  1. Разделить их на отдельные каталоги.

  2. Перейти к Junit4 (из v3) и комментировать классы, чтобы разделить их.

  3. Используйте соглашение об именовании файлов, чтобы сказать, что такое класс, то есть AdapterATest и AdapterAIntergrationTest.

3 имеет проблему с тем, что Eclipse имеет опцию «Запускать все тесты в выбранном проекте / пакете или папке». Поэтому было бы очень сложно просто запустить интеграционные тесты.

2: существует риск того, что разработчики могут начать писать интеграционные тесты в классах модульных тестов, и это просто становится грязным.

1: Похоже, самое лучшее решение, но моя интуиция говорит, что там должно быть лучшее решение.

Так что это мой вопрос, как вы разбиваете интеграционные тесты и правильные юнит-тесты?

124
задан Péter Török 9 April 2010 в 11:05
поделиться

4 ответа

В настоящее время я использую отдельные каталоги из-за организационной политики (и устаревшей версии Junit 3), но сейчас я сам собираюсь перейти на аннотации. Я использую Junit 4.

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

Мне интересно узнать, какие еще могут быть решения помимо аннотаций или физического разделения классов ..

10
ответ дан 24 November 2019 в 01:07
поделиться

Нет одного правильного ответа. Как вы объяснили, есть несколько эффективных способов сделать это. Я сделал и схему именования файлов, и разбил вещи по разным каталогам.

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

Я не думаю, что буду пробовать аннотации, потому что мне это кажется более тонким. Вы действительно хотите, чтобы эти два типа тестов были смешаны в одном файле? Я бы не стал.

6
ответ дан 24 November 2019 в 01:07
поделиться

Мы используем подключаемый модуль Maven Surefire для запуска модульных тестов и подключаемый модуль Maven Failsafe для запуска интеграционных тестов. Модульные тесты следуют соглашению об именах ** / Test * .java ** / * Test.java ** / * TestCase.java , интеграционные тесты - ** / IT * .java ** / * IT.java ** / * ITCase.java . Так что на самом деле это ваш вариант номер три.

В нескольких проектах мы используем TestNG и определяем разные тестовые группы для интеграционных / модульных тестов, но это, вероятно, не подходит для вас.

39
ответ дан 24 November 2019 в 01:07
поделиться

Я бы перешел на Junit4 только за то, что он есть :)

Вы можете разделить их на разные тестовые наборы. Я не знаю, как они организованы в Junit3, но в Junit4 это должно быть просто - создать тестовые наборы и поместить все реальные модульные тесты в один из них, а затем использовать второй набор для интеграционных тестов.

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

12
ответ дан 24 November 2019 в 01:07
поделиться
Другие вопросы по тегам:

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