MSpec,我应该在我的[Subject()]属性中添加什么?

时间:2011-08-20 23:58:25

标签: tdd bdd mspec

我一直在使用MSpec,我真的很喜欢它。我发现要让ReSharper识别我的规格,我需要使用SubjectAttribute

我想知道,[Subject()]属性中最好的是什么?

如果我正在做BDD,那么我不知道被测试的类型,所以[Subject(typeof(thingy))]似乎为时过早。可以在以后添加,我想一旦编写代码。

这样就留下了文本版本[Subject("some text")]。但放在那里最好的是什么?

无论我做什么,它似乎都不会影响我在ReSharper中获得的输出。我想在某种程度上这取决于个人偏好,但我想知道这里是否有任何约定?

1 个答案:

答案 0 :(得分:11)

您无需应用SubjectAttribute让ReSharper识别上下文和规范,包含It字段的类就足够了。但是,如果您希望ReSharper支持MSpec类型和字段(Because等)的自定义命名约定,则需要应用SubjectAttribute

  1. 在ReSharper中定义自定义命名约定选项| 语言/公共部分|命名风格|高级设置

    添加用户定义的命名规则时,向下滚动列表以查看MSpec实体。

  2. 在ReSharper中启用MSpec注释选项|代码检查/代码注释部分

    注释+ SubjectAttribute(即使没有自定义命名规则)也会阻止ReSharper将MSpec的字段标记为未使用。或者,在项目设置中禁用警告169.

  3. Subject用作描述上下文的元数据,例如,您可以使用被测系统(编写单元测试时),您选择的字符串或两者。这些信息将在HTML和ReSharper输出中报告。它现在不起作用,我怀疑这是ReSharper跑步者中的bug 6.0。

    与字符串一样,你基本上可以放任何你想要的东西。我建议使用主题按功能对您的规格进行分组。

    主题:登录

    上下文:使用有效凭据登录时,使用无效凭据等登录时

    example in my GitHub repository