2010-06-27 3 views
8

Я собираюсь начать изучать разработку с помощью покрытия кода, и мне интересно, как это типично подходит для разработки, основанной на тестах.TDD и покрытие кода

Является ли покрытие кода запоздалой? идти ли ваш процесс что-то вроде

  1. Написать тест на функциональность будет реализована
  2. тест Run, убедитесь, что они не
  3. Реализовать функциональность
  4. тест Run, убедитесь, что они проходят
  5. Write больше тестов для функциональности до тех пор, пока не будет получено покрытие 100% (или рядом) кода

Или вы запускаете покрытие кода в самом конце a были реализованы многочисленные функциональные части, а затем вернулись и работают на 100% охват?

Третий вариант, о котором я могу думать, заключается в том, чтобы стремиться к 100% -ному охвату, прежде чем реализовать функциональность.

Какая из них наиболее распространена и какие преимущества?

ответ

12

Вы не пишете тесты до достижения 100% -ного покрытия кода. Если вы следили за TDD, тогда есть no код, который когда-либо был написан без необходимости тестирования, поэтому вы всегда должны быть на 100% охвате.

Вместо этого вы пишете тесты до тех пор, пока все тесты не пройдут, и пока не будут выполнены все необходимые тесты. Это будет означать, что все необходимые коды были написаны, так как у вас будет только письменный код, если это требуется для теста.

+1

Да, я начал TDD недавно и был приятно удивлен, обнаружив, что после того, как я закончил писать тесты и код для пары классов, инструмент покрытия кода, который мы используем, сообщает о 100% охвате. Мне не нужно было думать о покрытии, просто убедитесь, что я написал только код, необходимый для прохождения теста. Если бы я случайно набрал слишком много кода, я бы попробовал случайным образом комментировать его, и если бы ни одно тестирование не началось, я понял, что не написал достаточно тестов. – SCFrench

1

С TDD вы должны почти всегда находиться вблизи покрытия 100% при разработке нового кода, так как вы не разрабатываете код, который вам не нужен для прохождения тестов. Только если вы считаете, что код настолько прост, что вам не нужен тест (скажем, как автоматическое свойство в C#), если у вас есть код, который специально не рассматривается. Вы можете с помощью рефакторинга иногда вводить блоки, которые не нужны, или изменять код неожиданными способами, чтобы вы могли использовать покрытие в этот момент, чтобы убедиться, что вы случайно не внедрили непроверенный код. Помимо этого, я бы сказал, что я использую его скорее как проверку на работоспособность и периодически анализирую покрытие по тем же причинам. Это также может быть очень полезно, когда ваша дисциплина ломается, и вы пренебрегаете работой в режиме TDD.

0

Помните, что у вас есть тест, который фактически использует код, который покрывается совпадением. Вы должны быть осторожны в этом, особенно при запуске TDD. О, я нахожусь в этой функции, и я знаю, что мне нужно будет добавить этот маленький крошечный тонкий обеденный мятой, в то время как я нахожусь здесь, почему бы не другой мятой. Прежде чем вы это узнаете, у вас есть куча непроверенного кода.

Запись Тест: Сбой Написать код: Pass Refactor: Pass

Goto топ

Смежные вопросы