我应该更改单元测试的命名约定吗?

Bla*_*asp 11 tdd bdd unit-testing naming-conventions

我目前使用一个简单的约定进行单元测试.如果我有一个名为"EmployeeReader"的类,我创建一个名为"EmployeeReader.Tests的测试类.然后我在测试类中为类创建所有测试,其名称如下:

  • Reading_Valid_Employee_Data_Correctly_Generates_Employee_Object
  • Reading_Missing_Employee_Data_Throws_Invalid_Employee_ID_Exception

等等.

我最近一直在阅读BDD中使用的不同类型的命名约定.我喜欢这个命名的可读性,最终得到一个类似的测试列表:

  • When_Reading_Valid_Employee(夹具)
    • Employee_Object_Is_Generated(方法)
    • Employee_Has_Correct_ID(方法)
  • When_Reading_Missing_Employee(夹具)
    • An_Invalid_Employee_ID_Exception_Is_Thrown(方法)

等等.

有没有人使用这两种命名方式?您能否提供任何建议,好处,缺点,陷阱等,以帮助我决定是否为我的下一个项目切换?

amp*_*dre 7

我一直在使用的命名约定是:

functionName_shouldDoThis_whenThisIsTheSituation

例如,这些将是堆栈的"pop"函数的一些测试名称

pop_shouldThrowEmptyStackException_whenTheStackIsEmpty

pop_shouldReturnTheObjectOnTheTopOfTheStack_whenThereIsAnObjectOnTheStack


Joe*_*ite 3

您的第二个示例(为每个逻辑“任务”提供一个固定装置,而不是为每个类提供一个固定装置)的优点是您可以为每个任务使用不同的 SetUp 和 TearDown 逻辑,从而简化您的单独测试方法并使它们更具可读性。

您无需选择其中之一作为标准。我们混合使用两者,具体取决于我们必须为每个类测试多少个不同的“任务”。