Wednesday, February 11, 2009

Использование Unit-тестов отдельно от TDD

В продолжение к этому комментарию.

> Если вам приходится тестировать приватные классы — значит у вас серьозные проблемы с архитектурой и пониманием TDD вообще.

Одно другому не мешает. Если я не использую TDD, что же мне теперь - на ощупь писать? :) Тесты сами по себе тоже полезны, независимо от TDD.

> Юнит-тест — это тест который помагает разрабатывать лаконичные и правильные внешние интерфейсы

Мы все прекрасно понимаем, что одними интерфейсами разработка не заканчивается - интерфейсы нужно еще реализовать :) И вот во время реализации часто возникает необходимость написать функцию в работе которой не уверен - у меня основной представитель такой неуверенности - ошибка на 1 (особенно в контексте indexOf, substr) и прочие мелочи (например, регулярные выражения) и т.д. и т.п. :)

И я, например, предпочитаю написать пару Unit-тестов, чтобы проверить правильность реализации, а не ждать пока это проявится как баг.

То есть тесты можно использовать не только для TDD и определения архитектуры интерфейсов, но и для повышения собственной уверенности в коде.

1 comment:

  1. В продолжение комментария

    > Типа “Плавали, знаем.” :)) Ню-ню.

    Типа да :) Был проект, в котором я попытался сделать реализацию DAO, подменяющую запросы к БД. И очень быстро такая реализация оказалась неэффективной и слишком наклАдной.

    Кроме того, при работе с БД тестируются ведь запросы. Вы что, будете писать свою реализацию SQL? :)

    > Вы ведь не тестируете работу базы данных. ;)

    И представьте себе я нашел-таки ошибку в базе данных http://issues.apache.org/jira/browse/DERBY-2989 :) А что было бы если бы я заменил доступ к БД своей реализацией?

    > Если у вас такие способности к программированию, что вам даже фейк-реализацию нужно тестировать на ошибки…. :))

    Именно так. Я использую тесты, потому что знаю свои способности к программированию :)

    ReplyDelete