Re[12]: Зачем нужен cppunit?
От: kwas Россия  
Дата: 21.09.05 14:17
Оценка: +1
Здравствуйте, Глеб Алексеев, Вы писали:

ГА>Вы смотрите на ситуацию со стороны начальника, т.е. велосипедостроитель — обязательно подчиненный. Я работаю в команде из 3х человек, выраженной иерархии у нас нет, но велосипедостроитель, не желающий слышать о юнит-тестах — старший товарищ, типа где-то даже начальник. Да, и такое бывает .


Знаю, сам с таким постоянно сталкиваюсь, и постоянно пытаюсь сподвигнуть на boost (если, конечно, есть аналоги), кивая в первую очередь на оттестированность (как юнит-тестами, так и пользователями в проектах). Получается с переменным успехом

ГА>Поэтому я, когда пишу что-то явно библиотечной направленности (типа bicycle_lib::tree<T>), то добровольно рисую юнит-тест, если в нашей общей bicycle_lib обнаружился глюк, опять же рисую тестик для обнаружения этого глюка, но покрытие тестов очень низкое. Так вот, даже в этой ситуации юнит-тесты здорово помогают, при том, что никакого TDD и в помине нет.


С интерфейсом tree, на мой взгляд, довольно трудно напортачить, тем более если вы изобретатель со стажем Благо есть немало примеров этих самых интерфейсов. Согласен, для вещей, интерфейс которых предсказуем, если не сказать стандартен, ваш подход работает на 100%. А вот новая бизнес-логика, для которой библиотек нет в помине, или просто сторонние библиотеки — с ними что делать? Взять вот тот же пример eao197
Автор: eao197
Дата: 21.09.05
:

E> Имхо, unit-тесты хороши, когда есть какая-то библиотечка (той же сериализации, скажем) и нужно протестировать ее методы.

E> Ну там сериализовать то-то, десериализовать, сравнить. Попробовать десериализовать то-то, посмотреть, что получилось.

Так вот я считаю, что этого недостаточно, а чаще просто не нужно. Потому как, если библиотека, поставляемая без юнит-тестов, не делает элементарных вещей, для которых она предназначена, то пользователи тут же закидают авторов тухлыми яйцами (багрепортами). Более интересны как раз граничные случаи: что будет, если парсеру подсунуть .cpp файл вместо сериализованного файла? Что будет, если сериализованный файл попортится где-нибудь в серединке? Что будет, если попытаться десериализовать объект одного типа в объект другого типа, несовместимого с исходным? Вполне возможно, что eao197 о его тестировании таких случаев просто не счел нужным упомянуть, но я как раз их считаю более важными, и именно из бережного к ним отношения вырастает красивая архитектура.
If a shark stops swimming, it will die. Don't stop swimming, Mr. Mulder.
Every epic equalizer is iso (c)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.