Comments 17
Давно хотел заняться юнит тестированием, но как-то руки не доходили. Ждем продолжение…
Эх… только единицы разработчиков в полной мере пользуются TDD :( Возможно, если бы все руководствовались бы такой методикой, то дырявого ПО было бы гораздо меньше.
Подготовить какую никакую матбазу и основываясь на ней делать дальнейшие выводы — это сильно и неожиданно.
А по-моему это должно быть стандартным подходом. Осознал, сформулировал, доказал (обосновал) — затем уже сделал. А не «показалось — сделал — переделал — переделал — переделал».
тут скорей не матбаза, а запись обывательских рассуждений матсимволами
Статью Вашу не понял, но посмотрите QuickCheck.
Там небольшой DSL для
— генерации входных данных
— указания свойств функции
— автоматического проведения тестов
Там небольшой DSL для
— генерации входных данных
— указания свойств функции
— автоматического проведения тестов
$a(z_0)$ или $a(h, x_0, z_0)$?
т.е. ассерт зависит только от конечного результата?
т.е. ассерт зависит только от конечного результата?
Я привел первый случай, потому как важно определить конечный результат. Почему важно? Чтобы не допустить ошибку в логике f(x). $a(h, x_0, z_0)$ — мне, если честно, не совсем понятен смысл этой конструкции. Дополнительные ассерты всего и вся? В том числе и функциональности теста? Чтож, можно и так — добавляется пятый шаг, на котором программист «усиляет» проверки (если они уместны).
Хм. Результат выполнения выдает z0. Т.е. опять же, h(x0) = z0 — это следует из определения функции, а сама конструкция определяет юнит-тест. Поэтому в конечном итоге все равно требуется только a(z0). Если честно, я не вижу смысла писать ассерты на код в h(x) — опять, из выведенного в статье h(x) = f(m(x)), а моки — не изменяют данные. Посмотрите в код, шаг 3, определяется мок, выдающий данные через заглушку ITopologyService. Он не изменяет данные, он их выдает в тестируемый класс как результат вызова метода ITopologyService.
Sign up to leave a comment.
Оптимизация процесса создания unit-тестов