Я бы предположил, что вам абсолютно необходимо.
Что такое автоматическое свойство сегодня может в конечном итоге, поле подложки поставил против него завтра, а не ты ...
Аргумент, что «вы просто тестирования компилятора или основа "- это немного солома imho; то, что вы делаете, когда вы проверяете авто-свойство, с точки зрения вызывающего, тестирует публичный «интерфейс» вашего класса. Вызывающий не имеет понятия, является ли это свойством auto с созданным фреймворком хранилищем или если в геттере/сеттере имеется миллион строк сложного кода. Поэтому вызывающий абонент тестирует договор , который подразумевает свойство, - что если вы положите X в коробку, вы можете получить X позже.
Поэтому нам нужно включить тест, так как мы тестируем поведение собственного кода, а не поведение компилятора.
Испытание, подобное этому, может потребоваться через минуту, чтобы написать, так что это не совсем обременительно; и вы можете легко создать шаблон T4, который будет автоматически генерировать эти тесты для вас с небольшим отражением. Я на самом деле работаю над таким инструментом на данный момент, чтобы спасти нашу команду. Некоторые из них:
Если вы делаете чистую TDD, это заставляет вас остановиться на мгновение и подумать о том, лучше всего сделать (подсказка: это часто не)
не Хотели бы вы иметь тест авансовые регрессии, так что, когда FNG делает что-то вроде этого:
//24-SEP-2013::FNG - put backing field for ConnectionString as we're now doing constructor injection of it
public string ConnectionString
{
{get { return _connectionString; } }
{set {_connectionString="foo"; } }//FNG: I'll change this later on, I'm in a hurry
}
///snip
public MyDBClass(string connectionString)
{
ConnectionString=connectionString;
}
Вы мгновенно знаете, что они что-то сломали?
Если вышеизложенное кажется надуманным для простого свойства строки, я лично видел ситуацию, когда авто-собственность была реорганизована кем-то, кто думал, что они были такими умными и хотели изменить его от члена экземпляра к обертке вокруг статический член класса (представляющий соединение с базой данных, поскольку это происходит, изменения для изменения не важны).
Конечно, тот самый очень умный человек полностью забыл, чтобы сообщить кому-либо еще, что им нужно вызвать магическую функцию для инициализации этого статического члена.
Это заставило приложение скомпилировать и отправить заказчику, после чего он быстро провалился. Не огромная сделка, но это стоило несколько часов времени поддержки == деньги .... Эта маппет была мной, между прочим!
EDIT: в соответствии с различными разговоры на эту тему, я хотел бы отметить, что тест на свойство чтения-записи до смешного прост:
[TestMethod]
public void PropertyFoo_StoresCorrectly()
{
var sut = new MyClass();
sut.Foo = "hello";
Assert.AreEqual("hello", sut.Foo, "Oops...");
}
редактировать: И вы даже можете сделать это в одна строка в соответствии с маркой Seeman's Autofixture
Я хотел бы представить, что если вы обнаружите, что у вас есть такое большое количество общедоступных свойств, чтобы сделать запись трех строк, подобных приведенным выше, для каждой из них, вам следует подвергнуть сомнению ваш дизайн; Если вы полагаетесь на другой тест, чтобы показать проблему с этим свойством, то либо
- Испытание на самом деле тестированием этого свойства или
- Вы будете тратить больше времени, проверяя, что этот другой тест не удается, поскольку свойство неверно (через отладчик и т. д.), чем вы бы потратили на ввод текста в указанном выше коде
- Если какой-либо другой тест позволяет сразу же сообщить, что свойство виновато, это не модульный тест!
редактировать (опять!): Как было отмечено в комментариях, и это правильно, такие вещи, как сгенерированных моделей DTO и тому подобное, вероятно, исключения к вышесказанному, потому что они просто тупые старые ведра для сдвига данных где-то еще, плюс, поскольку инструмент создал их, обычно их бессмысленно тестировать.
/EDIT
Кажется совершенно бессмысленным для меня. –
Если бы вы делали что-то другое, кроме как просто устанавливали его, я бы сказал «да». Но то, что вы делаете, бессмысленно. – gleng
Рассмотрите красивую и чистую статью Марка Симана [Тестовый тривиальный код] (http://blog.ploeh.dk/2013/03/08/test-trivial-code/) –