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

Clojure тестовое пространство имен

Я традиционно использовал ту же структуру папок для производственного и тестового кода, как показано ниже:

src/myproject/core.clj
test/myproject/core_test.clj

Для тестовых файлов я добавил _test в имя файла.

Недавно я заметил, что несколько проектов следуют этой структуре (это также то, что по умолчанию генерирует Leiningen):

src/myproject/core.clj
test/myproject/test/core.clj

Существует ли соглашение об этом или явное преимущество использования одного над другим?

4b9b3361

Ответ 1

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

Я лично предпочитаю первую версию по совершенно нетехническим причинам:

  • Кажется излишним иметь два "тестовых" каталога в пути.
  • Это может вызвать путаницу, чтобы иметь тестовые .clj файлы с теми же именами, что и основные .clj файлы.
  • Иногда вы хотите создавать тесты, которые не идеально совпадают с конкретными пространствами имен, например. full_system_test.clj для сквозного тестирования
  • Легче сопоставлять шаблоны во всех файлах *_test.clj

Также стоит отметить, что стандартная раскладка макетов Maven также используется в целом ряде проектов Clojure (это может быть удобно, если вы строить проекты polyglot, которые также содержат исходный код Java):

src/main/clojure/myproject/core.clj
src/test/clojure/myproject/core_test.clj
src/main/resources/....
src/test/resources/....