我一直在做一些使用 TDD 进行开发的测试;即先写我的测试。
我一直习惯这样写测试,使用这种命名约定。
MethodName_DoesWhat_WhenTheseConditions
这些对于单元测试非常有用,因为我知道方法名称是什么,但是在进行 TDD 时我不知道方法名称。例如,我有一个用户故事说明
"As a user, I can return the total number of records in the database"
现在只要看看这个,我马上就知道我会有很多方法和层。
但我现在不知道 TDD 中这些方法的名称,那么尝试在测试名称前加上前缀是否有意义?这里有人有什么建议吗?
此外,一旦我编写了我的测试和我的方法/类并且一切正常,是否有必要创建额外的“单元测试”来测试类中我没有通过 TDD 的东西?
最佳答案
通过遵循“由外向内”的开发方法,您会在开发过程中发现/改进您的 TDD 单元测试名称(另请参阅此答案 here)
例如,以您的用户故事为例(我稍作修改):
As a user
I want to know the total number of records in the database
So that I can report back to the business owner
在开发这个故事时,您会将其分解为多个场景,例如
Given a user logs in
When they request the total number of records
Then they should be presented with the result
在这个阶段,您仍然不知道需要什么单元测试。但是,如果使用“由外向内”开发方法,您现在将恢复使用 TDD 技术来实现必要的功能。
例如,接下来您将使用常规的 TDD 方法实现登录功能。因此,您可能有一个名为的测试方法:
WhenSubmitValidCredentials_ShouldBeAuthorised
您还可以使用这种方法“伪造它直到成功”,即您可以模拟某些依赖项(例如授权机制),以便您可以专注于实现场景的关键功能。
因此,按照这种方法,您将逐步开发用户故事所需的所有功能,同时创建准确的单元测试以满足场景。
关于c# - TDD 中的命名测试与单元测试命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24519282/