使用 BDD 和 Spock 框架进行测试的简介
介绍
我总是使用 JUnit 作为测试框架,这是一个很好的库,几乎是 Java 测试的标准。但是,有时你会觉得缺少了一些东西。
事实上,这种感觉在Dan North(被认为是 BDD 之父)的文章《BDD 简介》中得到了很好的描述:
我遇到了一个问题。在不同环境中的项目上使用和教授测试驱动开发 (TDD) 等敏捷实践时,我不断遇到同样的困惑和误解。程序员想知道从哪里开始、要测试什么和不要测试什么、一次要测试多少、如何称呼他们的测试以及如何理解测试失败的原因。
毫无疑问,TDD 是软件开发中一个有用的工具。但 TDD 的作用远不止测试,它还能改善设计流程。
当然,编写测试可以让你确信系统可以正常工作。然而,更重要的是,通过在编写代码之前编写测试,系统的行为可以得到很好的定义和记录。
行为驱动开发
这种情况并不常见,因此行为驱动开发 (BDD) 的目的是让我们认识到定义行为而不是测试本身的重要性,通过使用特定的词汇来尽量减少误解并鼓励业务分析师、开发人员、测试人员和利益相关者之间的协作。因此,BDD 可以被视为 TDD 的扩展。
在 BDD 中,测试和开发基于通用语言,描述系统特性的基本单元是故事。验收标准(测试的基础)是故事的一部分。
在他的文章《故事里有什么?》中,丹·诺斯建议故事采用以下模板:
Title (one line describing the story)
Narrative:
As a [role]
I want [feature]
So that [benefit]
Acceptance Criteria: (presented as Scenarios)
Scenario 1: Title
Given [context]
And [some more context]...
When [event]
Then [outcome]
And [another outcome]...
Scenario 2: ...
例如:
Story: Calculate amount to pay for a service (including tip)
As a member of a group
I want to know the amount to pay including tip
So that I can know how much I have to pay
Scenario 1: Service was acceptable
Given the amount of the bill $100
And the percentage to tip 15%
And the number of people 2
When the tip is calculated
Then the tip amount should be $15
And the total to pay should be $115
And the total per person is $57.50
Spock框架
Spock 是一个用Groovy编写的测试框架,这意味着它在 Java 虚拟机 (JVM) 上运行并允许您测试用 JVM 支持的任何语言编写的代码。
在本页中,您将了解使用 Spock 的十大理由。在这里,我只想强调其中三个:
- 易于学习。确实如此,即使您不了解 Groovy。
- 详细信息。仅凭这一点就足以让你抛弃其他任何框架。
- 语言很棒。我尝试过其他 BDD 框架,但 Spock 创建了一种更好、更具表现力的领域特定语言(DSL)。
话不多说,让我们开始看代码吧。
在本教程中,我们将使用 Eclipse 和 Maven 使用 Groovy 和 Spock 测试 Java 中的类。
为什么不使用 IntelliJ IDEA 和 Gradle?因为设置 Eclipse 和 Maven 稍微复杂一些,而且至少在我所在的地区,更多人使用这些工具。
设置环境
对于 Eclipse,首先,我们需要安装 Groovy 插件和一些依赖项。然后,我们将创建一个 Maven 项目,在pom.xml文件中配置所有必需的依赖项和插件,并添加一个用于存放测试类的目录。
让我们开始吧。我假设你使用的是Eclipse Mars.2(版本 4.5.2,但如果你使用的是其他版本,应该不会有太大区别),因此打开 Eclipse 并转到帮助 -> 安装新软件。
单击添加...按钮
输入以下信息并按OK (如果您使用的是其他版本的 Eclipse,您可以在此处找到更新站点的正确链接):
名称: Groovy 插件(或您想要的任何名称)
地址: https://dist.springsource.org/snapshot/GRECLIPSE/e4.5/
等待它获取信息,然后选择Groovy-Eclipse和Extra Groovy Compilers选项并单击Next。
检查要安装的项目,然后单击“下一步”。
接受许可条款并单击“完成”。
等待一会儿,Eclipse 将安装 Groovy 插件。您需要重新启动 Eclipse。
现在让我们创建项目。转到文件 -> 新建 -> 其他...并选择Maven 项目(请注意,借助 Groovy 插件,您现在可以选择创建 Groovy 类和 Groovy 项目)
在下一个窗口中,选中选项创建一个简单的项目(跳过原型选择)并单击下一步。
在此窗口中输入项目信息,例如:
组 ID: com.example
工件编号: spock
版本: 0.0.1-SNAPSHOT
包装:罐子
这将创建一个包含pom.xml文件和以下目录的项目:
src/main/java
src/main/resources
src/test/java
src/test/resources
但是,因为我们要使用 Groovy,所以正确的做法是创建一个src/test/groovy目录。为此,右键单击项目名称并选择选项Build Path -> Configure Build Path,然后选择Source选项卡。
单击添加文件夹...并创建新文件夹(相对于src/test您应该只输入 groovy)而不包含或排除模式。
接下来,选择新目录的选项“输出文件夹”,然后单击“编辑”。
指定测试的输出目录(target/test-classes)并单击确定。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~