Контракты кода действительно помогают поблочному тестированию?

У меня есть изрядное количество знания о поблочном тестировании. Я пытался читать о контрактах кода. Это действительно помогает поблочному тестированию? Это переоценено особенно, когда мы говорим о контракте кода, помогающем сделать поблочное тестирование. Я конкретно обращаюсь к контрактам в .net 4.0. Я использую nunit для поблочного тестирования.

8
задан Sandbox 27 July 2010 в 15:36
поделиться

2 ответа

Да и Нет . Модульные тесты - это в основном контракт, в котором говорится, что MyMethod () принимает X и ожидает, что Y будет результатом, а когда он этого не делает, модульные тесты терпят неудачу, и вы получаете предупреждение как разработчик MyMethod (), что вы нарушили что-то внутри него. Контракты кода действительно помогают вам писать модульные тесты, потому что требования в контрактах облегчают вам понимание требований модульных тестов при их написании. Однако настоящая причина контрактов кода не для вас, а для других разработчиков, использующих созданный вами API. Модульные тесты позволяют узнать правильные входы и выходы, но когда вы выпускаете код на волю, модульные тесты не выпускаются с .dll. Контракты кода дают другим разработчикам преимущество знания тех же требований посредством контрактов времени компиляции и проверки. Контракты защищают от тех разработчиков (меня), которые имеют ужасную тенденцию не читать документацию по методам и просто начинают передавать вещи, поэтому теперь они будут активно предупреждаться через контракты.

4
ответ дан 5 December 2019 в 20:12
поделиться

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

В этом случае вам все равно придется написать модульный тест. Контракт кода - это способ реализации вашей спецификации, но не единственный способ.

Другими словами, не думайте, что использование контракта кода означает, что вам не нужно писать модульный тест! Если кто-то изменит кодовый контракт или удалит его, у вас не будет теста, сообщающего вам, что предполагаемая спецификация не сработала.

0
ответ дан 5 December 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: