Читаючи описи, я розумію, що тести TDD робляться до написання функції, а в Unit Testing - після цього.
Це головна відмінність, або два терміни навіть не можна порівняти як такі. Можливо, Unit Testing є складовою частиною TDD.
Читаючи описи, я розумію, що тести TDD робляться до написання функції, а в Unit Testing - після цього.
Це головна відмінність, або два терміни навіть не можна порівняти як такі. Можливо, Unit Testing є складовою частиною TDD.
Відповіді:
Модульне тестування відноситься до то , що ви перевіряєте, TDD в при тестуванні.
Два є ортогональними.
Тестування одиниць означає, що добре, тестування окремих одиниць поведінки. Індивідуальна одиниця поведінки - це найменша можлива одиниця поведінки, яку можна індивідуально випробувати окремо. (Я знаю, що ці два визначення кругові, але вони, схоже, спрацьовують на практиці.)
Ви можете писати одиничні тести перед тим, як писати свій код, після того як ви пишете свій код або поки ви пишете свій код.
TDD означає (знову-таки, очевидний характер), що дозволяє вашим тестам керувати розвитком (і вашим дизайном). Це можна зробити за допомогою одиничних тестів, функціональних і приймальних тестів. Зазвичай ви використовуєте всі три.
Найбільш важливою частиною TDD є серединою D . Ви дозволяєте тестам керувати вами. Тести показують, що вам робити, що робити далі, коли закінчите. Вони розповідають, яким буде API, яким є дизайн. (Це важливо: TDD - це не про те, щоб спершу писати тести. Існує безліч проектів, які спочатку пишуть тести, але не практикують TDD. Спочатку написання тестів - просто необхідна умова для того, щоб тести могли рухати розробку.)
Ви можете робити тестування одиниць, не займаючись розробкою тестових програм. Однак ви не можете зробити тест-керовану розробку без використання одиничних тестів.
Коли ви робите традиційне тестування одиниць , ви пишете тест після написання коду.
Тестовий підхід до розробки полягає в написанні одиничного тесту перед написанням коду.
Найцікавіші переваги TDD (IMHO) порівняно з простим модульним тестуванням:
TDD і Unit Testing - це два дуже конкретні терміни, які часто не вживаються.
TDD пише тест, який не вдасться, потім записує мінімальну кількість коду, необхідного для його запуску, потім рефакторинг коду для очищення. Це робиться циклами, відмов -> pass -> refactor, додаючи новий тест для кожної відомої вимоги до коду. Зовсім недавно TDD став ще більш конкретно щодо написання одиничних тестів у цьому циклі, щоб відрізнити його від ATDD (підмножина BDD), яка пише тести прийняття в аналогічному циклі.
Тестування одиниць - це тестування коду в малих ізольованих одиницях. Загальна плутанина тут полягає в тому, що якщо ви використовуєте інструмент тестування одиниць, наприклад xUnit або Rspec, для запуску тестів, які ви пишете одиничними тестами. Це не обов'язково правда. Ці інструменти можуть бути використані для запуску тестів сказати, використовуючи рамки Selenium - у цьому випадку ви пишете приймальні тести, використовуючи модуль тестування блоку. Блокові тести - це спеціально тести, які зосереджуються на невеликій логіці, виділеній від усього іншого задля швидкості (так що ви можете запускати їх часто і отримувати швидкий відгук про нові помилки).
TDD - це підхід до написання тестових випадків до розробки, як ви вже говорили, і тоді розробник пише код для передачі тестових випадків. Unit Testing - термін, що використовується для опису вузького діапазону випробувань, окрім тестування системи, інтеграційного тестування та тестування приймання.
Те, як я розділюю два, полягає в тому, щоб вважати, що TDD менше стосується тестування, а більше - про розробку коду. Одиничні тести потім використовуються для встановлення очікувань кінцевого коду. Коли кінцевий код записується і проходить тести (специфікації), у вас є код, який був розроблений за допомогою тестів.
Усі відмінні відповіді. Я хотів би лише додати, що тестування приладів, як правило, розглядає «одиницю» як невелику складову, тоді як TDD збільшується, включаючи тести інтеграції та прийняття.
(Деякі варіанти TDD розглядають "блок" як найменший покроковий крок до бажаної функціональності ...)