Я є тестовим керуванням методом, який полягає у формуванні колекції об'єктів даних. Хочу переконатися, що властивості об’єктів встановлені правильно. Деякі властивості будуть встановлені на одне і те ж; для інших буде встановлено значення, яке залежить від їх положення в колекції. Природний спосіб зробити це, здається, за допомогою петлі. Однак Рой Ошерово настійно рекомендує не використовувати логіку в одиничних тестах ( Art of Unit Testing , 178). Він каже:
Тест, що містить логіку, зазвичай випробовує декілька речей одночасно, що не рекомендується, оскільки тест є менш читабельним та крихким. Але логіка тесту також додає складності, яка може містити приховану помилку.
Як правило, тести повинні представляти собою низку викликів методів, без потоків управління, навіть
try-catch
і з викликами затвердження.
Однак я не можу бачити нічого поганого в моєму дизайні (як ще ви створюєте список об'єктів даних, деякі значення яких залежать від того, в якій послідовності вони перебувають? - не можна точно генерувати та перевіряти їх окремо). Чи є щось, що не відповідає тесту в моєму дизайні? Або я занадто жорстко відданий вченню Ошерова? Або є якась секретна тестова одинична магія, про яку я не знаю, що обходить цю проблему? (Я пишу на C # / VS2010 / NUnit, але шукаю мовно-агностичні відповіді, якщо це можливо.)
in
) необхідною, якщо тест "Frob був успішно доданий до існуючої колекції".
toString()
Колекцію та порівнюю з тим, що має бути. Просто і працює.