TDD& BDD?哪个,为什么以及如何?

时间:2012-08-28 08:20:11

标签: tdd bdd

TDD& BDD?哪个,为什么以及如何?

任何人都可以给出一个很好的解释来证明两者的“哪个”,“为什么”和“如何”?

提前致谢。

1 个答案:

答案 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,您有很多选择,包括:

  • NUNIT
  • 的xUnit
  • MSTest的

上面的很多工具都可以通过Visual Studio中的NuGet安装,这很方便。