Я унаследовал нагрузку теста Junit, но эти тесты (кроме большинства не работающих) представляют собой смесь реальных модульных тестов и интеграционных тестов (требующих внешних систем, БД и т. Д.).
Так что я пытаюсь придумать способ их отделить, чтобы я мог быстро и качественно запустить модульное тестирование, а затем интеграционные тесты.
Варианты ..
Разделить их на отдельные каталоги.
Перейти к Junit4 (из v3) и комментировать классы, чтобы разделить их.
Используйте соглашение об именовании файлов, чтобы сказать, что такое класс, то есть AdapterATest и AdapterAIntergrationTest.
3 имеет проблему с тем, что Eclipse имеет опцию «Запускать все тесты в выбранном проекте / пакете или папке». Поэтому было бы очень сложно просто запустить интеграционные тесты.
2: существует риск того, что разработчики могут начать писать интеграционные тесты в классах модульных тестов, и это просто становится грязным.
1: Похоже, самое лучшее решение, но моя интуиция говорит, что там должно быть лучшее решение.
Так что это мой вопрос, как вы разбиваете интеграционные тесты и правильные юнит-тесты?
В настоящее время я использую отдельные каталоги из-за организационной политики (и устаревшей версии Junit 3), но сейчас я сам собираюсь перейти на аннотации. Я использую Junit 4.
Я бы не стал особо беспокоиться о том, что разработчики вводят интеграцию тесты в классах модульных тестов - при необходимости добавьте правило в стандарты кодирования.
Мне интересно узнать, какие еще могут быть решения помимо аннотаций или физического разделения классов ..
Нет одного правильного ответа. Как вы объяснили, есть несколько эффективных способов сделать это. Я сделал и схему именования файлов, и разбил вещи по разным каталогам.
Похоже, что разделение файла на разные каталоги может сработать для вас лучше, и мне это кажется немного яснее, поэтому я склоняюсь к этому.
Я не думаю, что буду пробовать аннотации, потому что мне это кажется более тонким. Вы действительно хотите, чтобы эти два типа тестов были смешаны в одном файле? Я бы не стал.
Мы используем подключаемый модуль Maven Surefire для запуска модульных тестов и подключаемый модуль Maven Failsafe для запуска интеграционных тестов. Модульные тесты следуют соглашению об именах ** / Test * .java ** / * Test.java ** / * TestCase.java
, интеграционные тесты - ** / IT * .java ** / * IT.java ** / * ITCase.java
. Так что на самом деле это ваш вариант номер три.
В нескольких проектах мы используем TestNG и определяем разные тестовые группы для интеграционных / модульных тестов, но это, вероятно, не подходит для вас.
Я бы перешел на Junit4 только за то, что он есть :)
Вы можете разделить их на разные тестовые наборы. Я не знаю, как они организованы в Junit3, но в Junit4 это должно быть просто - создать тестовые наборы и поместить все реальные модульные тесты в один из них, а затем использовать второй набор для интеграционных тестов.
Теперь определите конфигурацию запуска для обоих наборов в eclipse, и вы сможете легко запускать один набор. Эти наборы также можно запускать из автоматизированного процесса, позволяющего запускать модульные тесты при каждом изменении исходного кода, а интеграционные тесты (если они действительно большие) - только раз в день или раз в час.