А как сейчас с работой?
что хвастаются процентов покрытия кода юнит-тестами - чем ближе к 100, тем круче считается. А если далеко от 100, то уже не Test Driven Development.
Ну если цель - дойти до 100%, то из такой конторы надо валить :) Эти люди не понимают того, чем занимаются. Либо это какая-то специфическая сфера. У меня знакомый работает в фирме и они делают тесты для СуперДжета. У них покрытие около 98%. При этом на 600кБ исходного кода приходится больше 55Мб тестовых скриптов. Так что софт для самолетов/вертолетов или каких-то особенно чувствительных частей медицинского оборудования стремление к 100% покрытию оправдано. Вменяемые конторы стремятся к 70-80% покрытию. Стоимость покрытия больше этого уровня растет по экспоненте.
Где тесты для тестов?
:) А потом еще тесты для тестов тестов :)
Если вы такой крутой, что можете все кейсы предвидеть и отработать в тестах, то вы сразу и в коде можете это предвидеть и отработать - зачем тогда тесты?
1) тесты нужны для надежности, т.е. чтобы быть уверенным, что кто-то случайно не изменил поведение.
2) тестами описывается спецификация. так что нет необходимости предвидеть все кейсы. и уж тем более нет необходимости предвидеть все кейсы на стадии программирования ;)
По мне юнит-тесты должны проверять только важные вещи, т.е. подход Test Driven Development является очередным вредным максимализмом, когда фанатики доводят что-то до абсурда и начинают других заставлять делать так же.
Юнит-тестами описываются требования спецификации. Плюс к этому юнит-тесты - способ документации из серии how to.
Серебрянной пули не существует :) А сходить с ума можно по любой технологии.
Я уже не говорю о том, что тесты должны обновляться вместе с кодом.
Ну вообще говоря нет.
Как я понимаю, в юнит-тестах должны все кейсы отрабатываться и проверяться. В том числе бросаются ли исключения и какие при разных аномальных данных. Верно?
Нет, не верно. Юнит-тесты проверяют работу твоего кода. Т.е. если твой код не отлавливает никакие специфические исключения, то нет смысла тестировать реакцию на них. И если у тебя
try { ... } catch (Exception ex) { ... }
то нет никакого смысла делать больше одного теста с любым исключением ;)