Я знаю, що це дуже давнє запитання, але я хотів би додати свій досвід там. Нещодавно я змінив звичку одиничного тестування з окремих проектів на той самий.
Чому?
По-перше, я дуже прагну підтримувати структуру папки головного проекту однаковою з тестовим проектом. Отже, якщо у мене є файл, Providers > DataProvider > SqlDataProvider.cs
тоді я створюю таку ж структуру в своїх тестових проектах одиниць, якProviders > DataProvider > SqlDataProvider.Tests.cs
Але після того, як проект стає все більшим і більшим, коли ви переміщуєте файли з однієї папки в іншу або з одного проекту в інший, то над синхронізацією цих тестів з одиничними тестовими проектами стає дуже громіздка робота.
По-друге, не завжди дуже просто перейти від класу, який потрібно перевірити, до одиничного тестового класу. Це ще складніше для JavaScript та Python.
Нещодавно я почав практикувати, що кожен створений вами файл (наприклад SqlDataProvider.cs
) я створюю ще один файл із суфіксом Test, наприкладSqlDataProvider.Tests.cs
На початку здається, що це роздує файли та посилання на бібліотеку, але в перспективі ви усунете синдром рухомих файлів на перший погляд, а також переконаєтесь, що кожен файл, який є кандидатом на тестування, матиме парний файл з .Tests
суфіксом. Це дозволяє вам легко перейти до тестового файлу (тому що він знаходиться поруч), а не переглядати окремий проект.
Ви навіть можете написати бізнес-правила, щоб просканувати проект та визначити клас, у якому немає файлу .Tests, та повідомити про це власнику. Крім того, ви можете сказати своєму тестовому бігуну легко орієнтуватися на .Tests
класи.
Спеціально для Js та Python вам не потрібно буде імпортувати свої посилання з іншого шляху, ви можете просто використовувати той самий шлях цільового файлу, який тестується.
Я використовую цю практику деякий час, і я думаю, що це дуже розумний компроміс між розміром проекту та технічним обслуговуванням та кривою навчання для нових бажаючих проекту.