Я думаю, лучше хранить их с исходным кодом. Часто бывает так, что ожидаемое поведение для данного фрагмента кода меняется, а затем меняются и тесты. Кроме того, по мере добавления функциональности вы будете получать новые тесты, которые не будут работать с более старым кодом.
Тем не менее, имеет смысл иметь тесты в отдельном каталоге вашего исходного репозитория, чтобы вы могли легко избавиться от них при выпуске. Но в любом случае они должны быть версионированы вместе с кодом, который они тестируют.