Я собираюсь пойти против потока здесь и предложить создать другой проект для ваших тестов. Я считаю, что в целом на самом деле не имеет значения, где вы ставите тесты, если это согласовано и несколько управляемо. Однако для меня есть три убедительные причины для проведения отдельного проекта для испытаний:
Разделение проблем.Во-первых, ваша библиотека имеет одну цель, в тестах есть другая. В то время как для тестирования требуется, чтобы библиотека функционировала, библиотека не имеет реального использования для тестов. Примечание, что я не говорю, что тесты бесполезны, далеки от этого. Тесты проверяют работоспособность библиотеки, но в производственной среде тесты не имеют никакой цели.
Менее раздутые мелкие файлы. Тесты не всегда тривиальны. Но даже если бы все они были, они все равно использовали бы дисковое пространство. Так как тесты все равно не используются в производственной среде, это бессмысленно. Кроме того, разделение тестов на новый проект делает файловую структуру намного чище.
Среда CI, как правило, более чистая, чтобы ее настроить, когда тесты не существуют.
Хотя это, конечно, возможно, по крайней мере решить вторую проблему с директивами компилятора, это лишняя работа, когда это намного проще просто разделить. Тестирование библиотеки или приложения, которое может понадобиться вам для использования одного и того же пространства имен (внутренние классы?), Также не является проблемой, так как проект ваших тестов может отражать пространства имен. Очевидно, это делает необходимым не иметь коллизий имен в пространствах имен, но это тривиально.
С точки зрения поддержки Flash Builder, вы можете разделить вещи на два проекта. Все, что вам нужно сделать для создания нового теста, - это щелкнуть правой кнопкой мыши любой класс, который вы хотите протестировать, попросить создать новый тест и убедиться, что вы выбрали проект тестов вместо текущего в появившемся диалоговом окне. Это действительно главная причина, по которой у меня и членов моей команды было трудное время, оправдывая письменные тесты, когда мы попали в TDD, слишком много накладных расходов, чтобы начать работу. С текущим состоянием IDE это смехотворно просто и полезно.
Как и в случае с любым методом, есть оговорки. Во-первых, не очевидно, что тесты находятся в другом проекте, если они не документированы. Наличие тестов в одном проекте эффективно сортирует эту проблему. С другой стороны, это легко решить путем настройки maven или других инструментов управления зависимостями, которые могут возникнуть в вашей среде. Другая проблема заключается в том, что если у вас есть структура пакета в проекте тестов, которая отражает структуру библиотеки или приложения, есть некоторые накладные расходы на обслуживание при синхронизации этих структур. Хотя это не огромная проблема и довольно легко решаемая с помощью сценариев, это все равно стоит упомянуть.
Во всяком случае, вот как я это делаю.
Спасибо. Я чувствую, что SpringAS может быть немного переборщиком на этом этапе. То есть, я бы, вероятно, потратил больше времени на настройку, чем если бы я просто сделал все это вручную. –