Я никогда раньше не использовал модульное тестирование, поэтому я даю CxxTest. Я написал тест, чтобы проверить, правильно ли функция сортирует std :: vector. Сначала я убедился, что тест завершился неудачно, когда вектор не был отсортирован, а затем, как проверка работоспособности, я проверил, работал ли std :: sort (конечно, это было). Все идет нормально.Как провести тестирование сортировки std :: vector
Затем я начал писать свою собственную функцию сортировки. Однако я допустил ошибку, и функция не отсортировалась корректно. Поскольку мой тест не выводил промежуточные состояния вектора по мере его сортировки, было трудно сказать, где я ошибся в своей функции сортировки. Я закончил использовать операторы cout
(я мог бы использовать отладчик), чтобы найти ошибку, и никогда не использовал модульный тест, пока не узнал, что моя функция сортировки работает.
Я делаю что-то неправильно здесь? Я думал, что модульное тестирование было так просто, как
1) Написать тест
2) Написать функцию
3) Тест функция
4) Если тест не пройден, пересмотреть функции
5) Повторите 3 и 4 до испытания проходит
процесс я был больше похож
1) Написать тест
2) Написать функцию
3) Тест функция
4) Если тест не пройден, отлаживать функция пока не работает правильно
5) Повторите 3 (даже если функция уже известно, работает)
Я чувствую например, мой процесс не был действительно TDD, потому что дизайн моей функции сортировки не был приведенным мной испытанием. Должен ли я написать больше тестов, например. тесты, которые проверяют промежуточные состояния вектора по мере его сортировки?
Как вы запустили функцию без использования модульного теста? Используя другой код, если это так, зачем вам нужно, чтобы модульные тесты должны предоставлять нужные вам данные. – Mark