Я знаю, что это очень старый вопрос, но я хотел бы добавить туда свой опыт. Я недавно изменил привычку модульного тестирования с отдельных проектов на один и тот же.
Зачем?
Во-первых, я очень стараюсь сохранить структуру папок основного проекта такой же, как и в тестовом проекте. Итак, если у меня есть файл, Providers > DataProvider > SqlDataProvider.cs
я создаю такую же структуру в своих проектах модульного тестирования, напримерProviders > DataProvider > SqlDataProvider.Tests.cs
Но после того, как проект становится все больше и больше, как только вы перемещаете файлы из одной папки в другую или из одного проекта в другой, синхронизация их с проектами модульного тестирования становится очень громоздкой.
Во-вторых, не всегда легко перейти от класса для тестирования к классу модульного тестирования. Это еще сложнее для JavaScript и Python.
Недавно я начал практиковать, что каждый созданный мной файл (например SqlDataProvider.cs
) я создаю другой файл с суффиксом Test, напримерSqlDataProvider.Tests.cs
Вначале кажется, что файлы и ссылки на библиотеки будут раздуваться, но в долгосрочной перспективе вы избавитесь от синдрома перемещения файлов на первый взгляд, а также убедитесь, что каждый файл, который является кандидатом на тестирование, будет иметь парный файл. с .Tests
суффиксом. Это позволяет легко перейти в тестовый файл (потому что он находится рядом) вместо просмотра отдельного проекта.
Вы даже можете написать бизнес-правила для сканирования проекта и определения класса, у которого нет файла .Tests, и сообщить о них владельцу. Также вы можете легко указать своему тест-раннеру целевые .Tests
классы.
Специально для Js и Python вам не нужно будет импортировать ссылки с разных путей, вы можете просто использовать тот же путь к тестируемому целевому файлу.
Я использую эту практику некоторое время и считаю, что это очень разумный компромисс между размером проекта, удобством обслуживания и кривой обучения для новичков в проекте.