Контракты кода .NET 4.0 - Как они повлияют на модульное тестирование?
Например этостатья знакомит их.
В чем выгода?
Статический анализ кажется классным, но в то же время он не позволил бы передать значение null в качестве параметра в модульном тесте. (если вы следовали примеру в статье, которая есть)
Если говорить о модульном тестировании - учитывая, как сейчас обстоят дела, наверняка, нет смысла в контрактах на код, если вы уже практикуете автоматизированное тестирование?
Обновить
Поиграв с Code Contracts I 'Я немного разочарован. Например, на основании кода в принятом ответе:
public double CalculateTotal(Order order)
{
Contract.Requires(order != null);
Contract.Ensures(Contract.Result() >= 0);
return 2.0;
}
Для модульного тестирования выеще должны написать тесты, чтобы гарантировать, что ноль не может быть передан, а результат больше или равен нулю, если контрактыбизнес логика, Другими словами, если бы я должен был удалить первый контракт, никакие тесты не прервались бы, если бы у меня специально не было теста для этой функции. Это основано на том, что не используется статический анализ, встроенный в лучшие (окончательные и т. Д.) Выпуски Visual Studio.
По сути, все они сводятся к альтернативному способу написания традиционных операторов if. Мой опыт на самом деле с помощьюTDD, с кодовыми контрактами показывает, почему и как я пошел на это.