Сколько утверждений вы положили в тест? - PullRequest
4 голосов
/ 20 июля 2011

Я придерживаюсь идеи, что в тесте должен быть только один аргумент. Однако иногда трудно решить, нужно ли мне быть строгим или зависеть от этого.

Давайте рассмотрим пример. У меня есть клиент с адресом. У класса адреса есть City-Street-PostCode-Country и т. Д. Свойства

Я хотел бы проверить, заполняется ли адрес при создании клиента.

Должен ли я создать один тест на свойство или несколько утверждений

Assert.That(customer.Address.City,Is.EqualTo("London"));
Assert.That(customer.Address.Street, Is.EqualTo("StreetOne"));
Assert.That(customer.Address.Postcode, Is.EqualTo("MyPostCode"));

Что вы обычно делаете при тестировании метода, и важно, чтобы вы знали, что свойства были заполнены при передаче третьему лицу?

спасибо за любые предложения

Ответы [ 4 ]

3 голосов
/ 20 июля 2011

Я бы сказал, это зависит.В вашем случае я не вижу проблемы с этим, так как вы в основном тестируете одну функциональность (создаете клиента).Даже NUnit имеет ярлык для этого типа вещей через атрибут TestCase .

0 голосов
/ 20 июля 2011

У меня также есть идея "Один тест" -> "Один утверждать" .. но!

Если утверждения относятся к одному и тому же тестовому случаю, проблем больше не ставить. Как и в приведенном выше примере, я не вижу, проверяете ли вы полную строку адреса в одном случае с 3 утверждениями;

0 голосов
/ 20 июля 2011

Самое важное при тестировании - это то, что - это тестирование.Любой тест лучше, чем никакой тест.Если какие-то причудливые правила диктуют вам точный способ, как сделать это изящным, то какой смысл в том, чтобы раздражать вас так сильно, что вы скоро больше не будете писать [настоящие]?

0 голосов
/ 20 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...