На небольших проектах я держал их в одном месте. В крупных корпоративных проектах (например, для которых вы могли бы эффективно использовать Spring, например) мы обычно организовывали системные тесты в отдельном пакете / проекте. Это помогает отделить их от основной кодовой базы.
Если вы этого не сделаете, есть все виды соблазна повторно использовать классы из кода, чтобы «помочь» в чем-то, что должно быть более ориентировано на опыт пользователей системы (пользователь может быть другой системой). ). Если это произойдет, вы получите связь между классами домена проекта и пользовательским интерфейсом, что неизбежно приведет к необходимости дублировать большую часть логики, что поможет их развязать в реальной базе кода.
Большую часть времени логика в системных сценариях будет нацелена на страницы, экраны, веб-вызовы и т. Д., Поэтому повторное использование кода из основного проекта - это красная сельдь. Держите пакеты отдельно, чтобы этого не происходило, и потому что, как только вы этого не сделаете, вам не нужно хранить их в одном месте.
Однако убедитесь, что системные тесты зарегистрированы в том же контроле версий, что и код.
Если вы еще не проводите непрерывную интеграцию и тестирование / развертывание, возможно, это еще одна область, в которой некоторые знания помогут вам с файлами конфигурации. К сожалению, эта проблема не исчезает только потому, что у вас есть тесты в отдельном проекте.