Чи існують програми з відкритим кодом, розроблені з використанням тестово керованих розробок, які служать моделями того, як слід добре працювати тестування?
Я вважаю за краще бачити приклади в C # і .NET. (Зауважте, що я згадав додатки, а не лише бібліотеки.)
Я програміст середнього рівня, який дуже хоче вірити і практикувати TDD. Додаток, над яким я працюю в своїй щоденній роботі, є досить складним - близько 1 мільйона рядків коду - і я хотів би запровадити більше тестування одиниць. У нас є кілька тестових одиниць, але мої зусилля в TDD і робота над кодом, який вже перевіряється, не радує.
В моєму визнаному обмеженому досвіді TDD, схоже, заохочує велику складність у назві роз'єднання. Біти програми, які важко перевірити - і які випадково мають тенденцію до критичного значення, - висуваються на периферію, у сферу інтеграційних тестів, про які можуть або ніколи не писати. (Я маю на увазі звичайних підозрюваних тут, доступу до файлової системи, зволоження об’єктів із бази даних, асинхронних веб-дзвінків тощо)
Код, який тестується, як правило, передбачає велику співпрацю між об'єктами, а може бути, і просту логіку потоку, що все відбувається в пам'яті і яку, можливо, можна записати більш простим, зрозумілим способом, якщо все не повинно було бути повністю роз'єднаним. для тестування.
Я розумію методики знущання над залежностями та подібні, але, на моєму досвіді, велике використання глузування призводить до дуже крихких тестів. Якщо мій перший інстинкт, побачивши купу тестів, що червоніє, - це "Чудово, зараз я маю виправити всі макети", то мої тести стали швидше тягненням, а не мережею безпеки.
Я намагаюся подолати цей ментальний бар'єр, і як частина цього, я читаю книгу Майкла Пір'я, « Ефективно працюючи зі спадщиною кодексу» . Сподіваюся, мені покажуть дещо того, чого мені не вистачає.
Я також хотів би вивчити кілька нетривіальних програм .NET з хорошим покриттям коду, можливо, систему управління вмістом або додаток CRUD. Рамка тестування FitNesse, про яку говорить дядько Боб, - це те, що я, мабуть, дивлюся, але було б непогано побачити щось написане мовою, якою я найбільше знайомий.
Будь-які пропозиції або слова мудрості будуть вдячні.