【发布时间】:2014-05-03 04:08:08
【问题描述】:
我们应该将 BDD 测试归类为“单元测试”还是“集成测试”(“汇编测试”或“字符串测试”)?感到困惑,因为从技术上讲 BDD 测试是使用 *unit 工具运行的,尽管测试可能(并且在大多数情况下)涵盖多个组件,因为它们可能用于端到端测试用例。
【问题讨论】:
标签: unit-testing testing integration-testing bdd acceptance-testing
我们应该将 BDD 测试归类为“单元测试”还是“集成测试”(“汇编测试”或“字符串测试”)?感到困惑,因为从技术上讲 BDD 测试是使用 *unit 工具运行的,尽管测试可能(并且在大多数情况下)涵盖多个组件,因为它们可能用于端到端测试用例。
【问题讨论】:
标签: unit-testing testing integration-testing bdd acceptance-testing
BDD 不仅有一种测试。它同时使用验收测试和单元测试。
从验收测试开始。验收测试的目的是在高层次定义和验证应用程序功能。验收测试通常使用 JBehave 或 Cucumber 等 BDD 工具编写,而不是使用单元测试工具。您可以使用单元测试工具编写验收测试,但这并不像使用真正的 BDD 工具那样有效,因为单元测试工具将规范和实现混合在同一个文件中,从而更难专注于行为。从技术上讲,验收测试是集成测试,因为它们针对整个应用程序堆栈运行。
实施验收测试后,BDD 将继续进行测试,定义和验证所需应用程序行为的详细信息,并确保技术正确性。
其他集成测试可以使用与验收测试相同的工具编写,也可以使用单元测试工具编写,但不隔离应用层。即使它们是使用与验收测试相同的工具编写的,它们也只是集成测试,因为它们的动机是需求细节和工程问题,而不是高级需求。
BDD 还使用常规单元测试来测试需求细节和技术问题。
典型的 BDD 测试套件包括一整套验收测试、数量有限的集成测试(验收测试除外)和大量单元测试。靠近用户的应用层(例如控制器)通常在验收测试中大部分或全部进行测试,而较低的层(例如模型)需要更多的单元测试。
【讨论】: