Прошло некоторое время, когда я готов Mcconnell " Code Complete". Теперь я снова прочитал это в Ханте и Томасе "" Прагматический программист": используйте утверждения! Примечание. Нет утверждений о тестировании устройства, я имею в виду Debug.Assert()
.
После вопросов SO Когда следует использовать Debug.Assert()? и Когда использовать утверждение над исключениями в домене классы, полезны для развития, потому что "невозможные" ситуации могут быть найдены довольно быстро. И кажется, что они обычно используются. Насколько я понял утверждения, в С# они часто используются для проверки входных переменных для "невозможных" значений.
Чтобы максимально упростить и изолировать единичные тесты, я провожу классы и методы с помощью null
и "невозможного" фиктивного ввода (например, пустую строку).
Такие тесты явно документируют, что они не полагаются на определенный вклад. Примечание. Я занимаюсь тем, что Meszaros "xUnit Test Patterns" описывает как Minimal Fixture.
И что пункт: Если бы у меня были бы утверждения, охраняющие эти входы, они бы взорвали мои модульные тесты.
Мне нравится идея утвердительного программирования, но, с другой стороны, мне не нужно ее заставлять. В настоящее время я не могу придумать никакого использования для Debug.Assert()
. Может, мне что-то не хватает? Есть ли у вас какие-либо предложения, где они могут быть действительно полезными? Может быть, я просто переоцениваю полезность утверждений? Или, может быть, мой способ тестирования нужно пересмотреть?
Изменить: Лучшая практика для отладки Asserts во время модульного тестирования очень похожа, но она не отвечает на вопрос, который беспокоит меня: мне следует заботиться о Debug.Assert()
в С#, если я тестирую, как я описал? Если да, то в какой ситуации они действительно полезны? В моей нынешней точке зрения такие Unit Tests не сделали бы Debug.Assert()
ненужным.
Еще один момент: если вы действительно думаете, что это дублированный вопрос, просто напишите комментарий.