Подтвердить что ты не робот

Организация тестов JUnit в проектах

Что вы считаете лучшей практикой для организации тестов JUnit в проекте и почему? Например, сохраняете ли вы свои тесты рядом с классами, которые они тестируют? Вы помещаете их в отдельную, но параллельную структуру пакета? Вы используете полностью стратегию организации?

4b9b3361

Ответ 1

Я использую отдельную, но параллельную структуру пакета по нескольким причинам.

  • Он проводит тесты, организованные так же, как и код приложения.
  • Я могу легко создавать только файлы приложений для распространения.
  • Тестовый код по-прежнему имеет доступ к моему коду приложения.
  • Это не так загромождено, как тестовый код, смешанный с кодом приложения.

Ответ 2

Я поставил свои тесты в отдельной, но аналогичной/параллельной структуре пакета. Так Maven любит вещи, и это хорошо работает с IDE тоже. Мне это нравится, потому что у меня нет моего тестового кода, смешанного с моим кодом приложения, но я все еще могу получить доступ к частным частям пакета с целью насмешек и проверки состояния.

Ответ 3

Просто используйте Maven. С помощью maven вы можете создать структуру по умолчанию для своего проекта:

mvn archetype:create -DgroupId=com.yoyodyne -DartifactId=UberApp

Это создаст стандартный макет Maven, содержащий пространство для модульных тестов, а также ваш основной проект. Используя maven, вы можете запускать модульные тесты, не упаковывая их в банку, и вы можете создать банку, содержащую только ваше приложение. Вы также можете использовать разные классы и разные зависимости для времени выполнения, тестирования и компиляции.

Мне кажется, что беспокоиться, что так мало людей вокруг здесь используют Maven (или, по крайней мере, Ant, хотя я предпочитаю Maven для обработки зависимостей.)

Ответ 4

Я уважаю структуру проекта Maven, даже если я не использую maven в проекте, просто потому, что привык к этому. Лучшей практикой является использование отдельной исходной папки, которая соответствует той же структуре пакета, что и ваша основная исходная папка.

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

Ответ 5

как сказал Билл Ящерица,

он помогает иметь параллельную структуру, так что 1) Я могу отправить src.zip или src.tar.gz и опустить модульные тесты 2) На уровне системы управления версиями вы можете поместить крючки на тех, кто меняет исходный код, и кто изменяет только модульные тесты

"Неудобство"
Вы не можете запечатать свой JAR файл, если и исходный, и unit тесты находятся в одном пакете (это означает, что вам нужно удалить модульные тесты перед подготовкой вашего JAR и запечатать его)