更快地创建测试方法

本文关键字:测试方法 创建 | 更新日期: 2023-09-27 17:52:11

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

Should_not_allow_negative_number_in_value()

但是每次都输入_是很无聊的,而且它总是有相同的签名…

所以…有人知道如何让它更快吗?

谢谢!

更快地创建测试方法

这可能会使这个过程自动化(不是完全自动化,但如果你使用这个命名符号的话会更自动化一点):

我通常这样命名我的测试:

MethodToTest_State_ExpectedBehavior

的例子:

[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$
}

您甚至可以尝试将您的命名约定分组为几个组,并为每个组创建一个代码片段/模板。

编辑2:
关于此测试命名约定的更多信息:单元测试的命名标准,作者:Roy Osherove, 单元测试的艺术

使用更短的名称,不要在方法名称中写句子,使用更像

DisallowNegativeValuesTest()

如果您正在寻找可读的测试,请查看Cucumber &Gherkin作为BDD框架

我知道有几个选项可以使这更容易:使用自动热键或使用ReSharper LiveTemplates

使用PascalCase代替underscore_case

ShouldNotAllowNegativeNumberInValue();

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