Я использую кодовые контракты в своем приложении C# вместе с модульными тестами. Когда я запрашиваю результаты тестирования кода в модульных тестах, строки, содержащие кодовые контракты, сообщаются как «не охваченные».Кодовые контракты и покрытие кода
Давайте, например, метод, который имеет 2 параметра:
void MyMethod(object param1, object param2) {
Contract.Requires<ArgumentNullException>(param1 != null);
Contract.Requires<ArgumentNullException>(param2 != null);
// Other stuff covered explicitly by unit tests
}
Поскольку контракты потерпеть неудачу, если условия не будут выполнены, не должны сообщать инструмент покрытие кода, что два параметра покрыты?
Для моего понимания код, охватываемый контрактами, не нуждается в повторном тестировании. Это верно?
Посмотрите здесь http://stackoverflow.com/questions/1383535/net-4-0-code-contracts-how-will-they-affect-unit-testing?rq=1 – Alex
Спасибо за ссылку! Я думаю, что это означает, что мне придется протестировать исключение с помощью модульных тестов, например, проверить, действительно ли 'MyMethod (null, null)' фактически генерирует «ArgumentNullException». Это было бы менее идеальным, поскольку, поскольку контракты гарантировали функциональность. Может ли кто-нибудь подтвердить это? – drl