TDD& BDD?哪个,为什么以及如何?
任何人都可以给出一个很好的解释来证明两者的“哪个”,“为什么”和“如何”?
提前致谢。
答案 0 :(得分:1)
TDD更多地用于单元测试,例如测试类的方法。 BDD用于测试系统的行为,例如创建用户或发送新产品电子邮件。
因此,对于TDD,您可能会看到类似的内容。
public void Test()
{
// Arrange.
var sut = new ClassToTest();
// Act.
int result = sut.SoSomething();
// Assert.
Assert.Equal(result, 23);
}
使用BDD(取决于您使用的工具),您会看到类似这样的内容:
Feature: Add a user
As a system admin
In order to give a user access to the site
I want to create a user account
Scenario: Creating a basic user
Given I have the user's name
When I create a new user account
Then that user can log onto the site
尽可能地,BDD正在测试系统的行为而不是单个单元。以下是Dan North的一篇非常好的BDD简介 - http://dannorth.net/introducing-bdd/
我建议您在构建类/代码时使用TDD,并希望一次测试一小部分内容。如果要在测试中测试多于一个类,即集成测试,请使用BDD。
编辑:
对于BDD的方方面面,我建议使用SpecFlow。这是一个流行的BDD工具,它为Visual Studio添加了许多功能,用于创建功能文件(功能:我上面提到的内容)以及运行和调试测试。
引擎盖下SpecFlow可以使用NUnit或MSTest来生成测试。其他BDD工具包括:
和我现在忘记的许多其他人:)我建议你尝试一下,看看你喜欢哪一个。
对于TDD,您有很多选择,包括:
上面的很多工具都可以通过Visual Studio中的NuGet安装,这很方便。