FitNesse入门——一款验收测试框架
[LOADING...]
1. 概述
单元测试和集成测试可以帮助开发者验证应用程序的行为是否符合预期,但编写和维护它们通常需要编程知识。相比之下,验收测试允许测试人员在不编写测试代码的情况下,根据需求验证应用程序的行为。
FitNesse 是一个流行的 Java 应用程序验收测试框架。
在本教程中,我们将了解如何使用 FitNesse 为一个简单的银行应用程序编写验收测试。
2. 理解 FitNesse 框架
FitNesse 是一个可用于 Java 应用程序的验收测试框架。它提供了一个基于 Web 的 wiki 界面,我们无需使用传统编程语言编写验收测试,就可以在其中创建、编辑和运行它们。FitNesse 使用自己的 wiki 风格语法,而不是标准 Markdown。
此外,它支持两种测试系统:Fit 和 Slim。Slim 是现代 FitNesse 测试中常用的选择。使用 Slim 时,FitNesse 通过 Slim 协议与 fixture 代码通信,从而允许我们的 Java 代码作为验收测试的一部分被调用。
要使用 FitNesse,我们可以下载其可执行 JAR 并将其作为 Java 应用程序运行。或者,当我们希望将 FitNesse 作为项目构建配置的一部分进行管理时,可以将其作为测试依赖添加到 Maven 或 Gradle 项目中。
3. Maven 依赖
接下来,让我们将 fitnesse 依赖添加到 pom.xml 中:
fitnesse 依赖包含 FitNesse 应用程序及其内嵌的 Web 服务器。启动 FitNesse 后,它会暴露一个 Web 界面,我们可以从浏览器访问该界面来创建和运行验收测试。
4. 示例项目
为了演示它的工作方式,让我们创建一个简单的银行应用程序。
4.1. BankAccount 类
首先,创建一个名为 BankAccount 的类:
在上面的类中,我们通过构造函数提供的余额初始化账户。然后,我们定义了存款、取款和获取当前余额的方法。为简单起见,我们使用 double 类型表示货币值。
4.2. BankAccountFixture 类
接下来,让我们创建一个 fixture 类,将银行操作暴露给 FitNesse:
上面的类充当 FitNesse 和 BankAccount 类之间的桥梁。它暴露了 FitNesse 可以作为验收测试的一部分调用的方法。
setInitialBalance()、setDeposit() 和 setWithdraw() 方法配置测试数据,而 execute() 对账户执行请求的操作。最后,balance() 方法返回结果余额。
这些操作代表了我们想要通过验收测试验证的行为。
5. 编写验收测试
首先,让我们创建一个带有 main() 方法的启动器类来启动 FitNesse 服务器:
接下来,运行 main() 方法,并在浏览器中访问落地页:
[LOADING...]
这是默认的 FitNesse 落地页。由于我们的示例不需要默认内容,让我们点击 Edit 编辑该页面,并创建验收测试:
[LOADING...]
在这里,我们删除页面的原始内容并添加测试。首先,我们配置 FitNesse 使用 Slim 测试系统。接下来,我们将包含已编译 Java 类的目录添加到 FitNesse 类路径中。然后,导入包含 fixture 的包。
最后,我们使用 FitNesse 的 wiki 表格语法定义验收测试。
点击 Save 按钮后,新页面如下:
[LOADING...]
保存后的页面现在显示我们的验收测试。但是,Test 按钮尚未启用。让我们配置页面属性以启用测试执行。
为此,点击 Tools 并选择 Properties:
[LOADING...]
页面属性有不同的选项。在 Page type 下,选择 Test,然后点击 Save Properties 按钮。保存属性后,测试页面上就会出现 Test 按钮。
接下来,点击 Test 执行验收测试:
[LOADING...]
测试结果显示,所有五个断言都成功通过,0 个错误断言,0 个忽略断言,0 个异常。结果余额也与每个测试用例中的预期值匹配。
6. 结论
在本课中,我们学习了如何使用 FitNesse 为 Java 应用程序编写和执行验收测试。此外,我们构建了一个简单的银行应用程序,并创建了一个 Slim fixture,使 FitNesse 能够与应用程序的业务逻辑交互。
此外,我们还了解了如何配置和启动 FitNesse 服务器、配置 FitNesse 使用 Slim 测试系统,以及将已编译的 Java 类添加到 FitNesse 类路径中。
一如既往,示例的源代码可在 GitHub 上获取。