Поведение атрибутов тестирования - PullRequest
1 голос
/ 16 августа 2010

Я использую SharpArch с атрибутом [Transaction] SharpArch.Contrib.Атрибут Transaction добавляется к методу службы приложения, и если во время этого метода генерируется исключение, любые изменения в любых объектах домена отменяются.Судя по всему, это работает хорошо.

Тем не менее, я пишу тесты NUnit, чтобы подтвердить, что при необходимости генерируются исключения (недопустимое состояние, ошибки безопасности и т. Д.), Но я также хочу подтвердить, что атрибут Transactionпредставить и делать свою работу по откат изменений.Можно ли как-нибудь это сделать?

Я действительно верю, что атрибут Transaction в SharpArch.Contrib является сплошным кодом, но какой-то будущий программист может случайно удалить атрибут Transaction из метода или отключить его во время тестирования, которое не будетпоймал юнит тестов.Я слишком осторожен?

Спасибо
Дан

Ответы [ 2 ]

2 голосов
/ 17 августа 2010

Я думаю, что вы немного параноик, но это нормально: -)

Если вы доверяете коду SharpArch, то я не буду беспокоиться о том, что исключение будет возвращено вам правильно.Предположим, что это работает, и обнаружите любые проблемы во время интеграции или функционального тестирования.Тестирование стороннего кода имеет значение только тогда, когда вы либо не доверяете ему, либо пытаетесь его понять.

С другой стороны, если вы хотите проверить наличие атрибута (т.е. проверить, чтоу метода есть соответствующий атрибут), тогда вы можете написать тест, который использует отражение, чтобы проверить сигнатуру метода и сделать некоторые утверждения.Это не так сложно сделать - вы просто используете объект methodinfo для определения атрибутов метода и сканируете TransactionAttribute.

0 голосов
/ 16 августа 2010

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

Я не уверенкак бы вы проверили его на уровне юнит-теста.

...