Я думаю, что вы на правильном пути здесь. Тесты, подтверждающие, что код работает, вызовут метод с разумными, значимыми и ожидаемыми вводами, при этом программа находится в нормальном состоянии. В то время как тесты для разрыва кода пытаются думать «из коробки» относительно этого фрагмента кода, используйте, таким образом, какой-либо бессмысленный или неожиданный ввод.
Что такое ИМХО, важно понимать, что два мыслительных процесса очень разные. Когда разработчик пишет код в режиме TDD, он стремится сосредоточиться на различных битах функциональности для реализации в коде, а тесты доказывают, что этот и этот бит функциональности или использования используются как указано. Тесты, созданные таким образом, - это то, что Макконнелл называет «чистыми тестами».
Думая о том, как фрагмент кода может быть нарушен, требуется совсем другой процесс мышления и другой опыт. Это требует рассмотрения ваших методов и API с другого ракурса, например. временно отложив в сторону то, что вы знаете о , цель этих методов и параметров, и сосредоточиться только на том, что есть технически возможно, чтобы сделать с ними. Также подумать обо всех - часто подразумеваемых - предпосылках или зависимостях, необходимых для правильной работы этого метода. Это зависит от параметра конфигурации, считанного из БД? Он записывает в файловую систему? Вызывает ли он другой компонент, ожидая, что он будет предварительно инициализирован заранее? Использует ли он большой объем памяти? Отображает ли это сообщение в графическом интерфейсе? ... И что, если один или несколько из них не выполняются?
Все это приводит к важным вопросам: Как ваш метод обрабатывает такие грязные случаи? Должен ли он упасть? Выбросить исключение? Продолжайте как можно лучше? Вернуть код ошибки? Записать отчет об ошибке? ... Все эти небольшие или более крупные решения на самом деле очень важны для правильного и последовательного определения контракта метода или API.
Кент Бек рассказывает о переключении между «шляпой разработчика» и «тестером» в том же смысле. Свободно переключающие точки зрения и мыслительные процессы таким образом требуют практики и опыта.
Если вы этого не сделаете: передайте строки с нулевым символом '' \ 0 "' в качестве параметров метода. Возможно, посмотрите на такие инструменты, как [PEX] (http://research.microsoft.com/en-us/projects/pex/), которые хорошо справляются с автоматическим тестированием ваших крайних случаев. – Filburt