MSpec, что я должен добавить в мои атрибуты [Subject ()]? - PullRequest
7 голосов
/ 21 августа 2011

Я уже некоторое время пользуюсь MSpec и мне это очень нравится. Я обнаружил, что чтобы ReSharper распознал мои спецификации, мне нужно использовать SubjectAttribute.

Интересно, а что лучше всего добавить в атрибуты [Subject()]?

Если я делаю BDD, то я не знаю тестируемый тип, поэтому [Subject(typeof(thingy))] кажется преждевременным. Может быть добавлено позже, я полагаю, когда код написан.

Так что выходит текстовая версия, [Subject("some text")]. Но что лучше туда положить?

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

1 Ответ

11 голосов
/ 21 августа 2011

Вам не нужно применять SubjectAttribute, чтобы ReSharper распознавал контексты и спецификации, достаточно класса, содержащего поле It. Однако если вы хотите, чтобы ReSharper поддерживал пользовательские соглашения об именах для типов и полей MSpec (Because и др.), Вам необходимо применить SubjectAttribute:

  1. Определение пользовательских соглашений об именах в ReSharper | Варианты | Языки / Общий раздел | Стиль именования | Расширенные настройки

    При добавлении пользовательского правила именования прокрутите список вниз, чтобы увидеть объекты MSpec.

  2. Включить аннотации MSpec в ReSharper | Варианты | Раздел проверки кода / аннотации кода

    Аннотации + SubjectAttribute (даже без пользовательских правил именования) не позволяют ReSharper помечать поля MSpec как неиспользуемые. Также можно отключить предупреждение 169 в настройках проекта.

Subject служит метаданными, описывающими ваш контекст, например, вы можете использовать тестируемую систему (при написании модульного теста), выбранную вами строку или обе. Эта информация будет сообщена в HTML и в выводе ReSharper. Это не работает на данный момент, я подозреваю, что это ошибка в ReSharper Runner для 6.0.

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

Тема: Логин

Контексты: при входе с действительными учетными данными, при входе с недействительными учетными данными и т. Д.

В моем репозитории GitHub есть пример .

...