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