更快地创建测试方法

6

我喜欢这样创建我的测试方法:

Should_not_allow_negative_number_in_value()

但是每次都打下划线感觉很无聊,而且签名也总是一样...

所以...有人知道怎么更快地输入吗?

谢谢!


3
这个问题是认真的吗?如果是,请您详细说明,因为我不明白您的意思。请阐述一下。 - Hubro
2
@Codemonkey 这个问题有什么问题吗?当然很严肃。难道 @Carol 想要编写方法,使单词之间用 _ 分隔而无需编写 _ 这一点很难理解吗?这是可能存在的。例如,将CamelCase命名转换为该格式的某些内容。我不知道。 - Oscar Mederos
我编辑了关于命名的问题。不知道当时在想什么。请再看一下它。 - Oscar Mederos
谢谢奥斯卡,我正在这里测试 =) - Carol
5个回答

3

有一些东西可以自动化这个过程(虽然不完全,但如果使用这种命名约定,会更加自动化):

我通常会将我的测试命名为:

要测试的方法_状态_期望行为

例如:

[Test]
public void ConvertToInt32_NullValue_ThrowException
{
    //Test method body
}

你可以安装 ReSharper,并创建一个新的Live Template,如下所示:

[Test]
public void $Method$_$State$_$Expected$()
{
    $END$
}

并指定一个快捷键,比如tst

现在,每当您想添加一个新的方法时,只需开始编写tst,然后按两次TAB,它将为您创建该方法,并将光标放置在Method名称上。按下Enter后,光标将移动到您编写State名称的位置,然后是Expected,最后将被放置在$END$所在的位置。

编辑:
如果您将所有测试命名为_Should,那么这也可能很有帮助。例如:

ConvertToInt32_NullValue_ShouldReturnTrue

然后,您可以修改您的模板为:

[Test]
public void $Method$_$State$_Should$Expected$()
{
    $END$
}

你甚至可以尝试将命名约定分成几组,并为每个组创建一个片段/模板。更多关于此测试命名约定的内容,请参考Roy Osherove(《单元测试的艺术》作者)的《单元测试的命名约定》

1

使用 PascalCase 而不是 underscore_case

例如:

ShouldNotAllowNegativeNumberInValue();

太好了,没有下划线!代码现在少了80%的无聊。


2
我认为这是个人偏好。我很容易读懂 CamelCasing,特别是像这样的长短语句子,因为下划线 “_” 会把这些短语长度推出屏幕。你可能需要考虑适应 CamelCase,尤其是在使用 C# 编程语言时,因为那是预期的标准。 - ohmusama
2
我喜欢将测试方法命名为@Carol。我认为这只是你的团队中程序员之间的一种约定,以及你对它的感觉更舒适。此外,《单元测试的艺术》的作者Roy Osherove也喜欢这种方式:/ - Oscar Mederos
@Oscar,我确实说这是个人偏好......不过,我相信C#的约定是使用驼峰命名法。我知道PHP倾向于使用下划线命名法。我会遵循语言的约定,但我也无所谓。 - ohmusama
你的示例是PascalCase而不是camelCase。 - Ronnie Overby
@RonnieOverby 谢谢,我昨天在和同事一起工作时正好在思考这个问题!真是及时啊。 - ohmusama
显示剩余3条评论

1
使用较短的名称,并且不要在方法名中编写句子,可以使用类似于...的更简短的内容。
DisallowNegativeValuesTest()

1
如果你正在寻找可读性强的测试,可以考虑使用Cucumber和Gherkin作为BDD框架。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接