Unit Test. Кто использует?
Как показывает моя практика покрытый юнит-тестами код сбоев не дает.
Откуда уверенность, что он именно поэтому не дает сбоев? Это, наверное, говорит скорее с пользу или бесполезности этих юнит тестов, или это как раз потому, что:
1) это должны быть реальные юнит-тесты
- юнит-тесты должны быть независимы (в том числе и от системы)
- юнит-тесты должны быть быстрыми
- один юнит-тест должен покрывать определенный юз-кейс (т.е. один assert на тест)
, т.е. юниттесты не везде применимы, а только к тем элементам, которые
- позволяют их протестировать независимо (согласитесь, не любой элемент это позволяет)
- элементы относительно просты, т.к. если тест выполняется быстро, то и сам элемент тоже
- элементы опять же просты, т.к. имеют обозримое (и небольшое) количество юзкэйсов (иначе мы бы заковырялись их писать)
Т.е. относительно простые части Вашего кода, которые дают себя проюниттестировать, не дают сбоев как раз в силу своей относительной простоты. А более сложные логически участки, видимо, дают сбои. И не потому, что там не так густо юниттестируется, а потому что сложные вещи (со многими логическими взаиамосвязями и зависимостями) или не поддаются юниттестированию, или оно еще сложнее, чем сам тестируемый код.
Могу сделать из уже имеющегося обсуждения, что серебрянная пуля юнит тест (и тдд) нэт. И применение их довольно ограничено. Это - очередная попытка "уменьшить количество ошибок в программе". Помню времена, когда была мода на try-catch блоки, да и многое другое. Целые языки программирования рассматривались в свое время как "позволяющие программировать без ошибок". Эх, сколько я их уже перевидел, этих модных технологий! Каждая оставляет после себя некий рациональный след, но очень немногие оказываются тем, что ожидают их приверженцы, когда они появляются и входят в моду. Утихнет и этот шум.
Хотя использование юниттэстов для определенных элементов должно быть полезно.