Вы можете подумать, что этот вопрос похож на этот вопрос, заданный ранее в StackOverflow. Но я стараюсь смотреть на вещи по-другому.
В TDD мы пишем тесты, которые включают разные условия, критерии, код проверки. Если класс проходит все эти тесты, мы должны идти. Это способ убедиться, что класс фактически выполняет то, что он должен делать, и ничего больше.
Если вы следуете книге Бертран Мейерса "Объектно-ориентированное программирование" словом, сам класс имеет внутренние и внешние контракты, так что он делает только то, что он должен делать, и ничего больше. Никаких внешних тестов не требуется, так как код для обеспечения выполнения контракта является частью класса.
Быстрый пример, чтобы прояснить ситуацию
TDD
Создайте тест, чтобы во всех случаях значение варьировалось от (0-100)
Создайте класс, содержащий метод, который проходит тест.
DBC
- Создайте класс, создайте контракт для этого члена
var
для диапазона от (0-100), установите контракт для нарушения контракта, определите метод.
Мне лично нравится подход DBC.
Есть ли причина, почему чистый DBC не так популярен? Являются ли это языками или инструментами или являются Agile или это только я, которому нравится иметь код, ответственный за себя?
Если вы думаете, что я не думаю правильно, я был бы более чем готов учиться.