2011-08-20 8 views
7

Я некоторое время использую MSpec, и мне это очень нравится. Я нашел, что, чтобы заставить ReSharper распознать мои спецификации, мне нужно использовать SubjectAttribute.MSpec, что я должен помещать в свои атрибуты [Subject()]?

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

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

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

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

ответ

11

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

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

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

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

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

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

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

Тема: Вход

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

Там в example in my GitHub repository.

+0

Ах, спасибо за информацию и, в частности, ссылку на образцы, я их не нашел, и я уверен, что они будут ценными. Я думаю, что, возможно, эта ссылка заслуживает более заметной рекламы :) –

+0

Если вы хотите внести в нашу readme документацию, относящуюся к ReSharper, высоко ценится запрос на перенос :) –