几十年来, Java 一直是开发应用程序服务器端的首选编程语言. 尽管 JUnit 与开发人员一起帮助他们进行自动化单元测试, 随着时间的推移和测试的发展, 当自动化测试正在兴起时, 许多开源框架已经开发出来,. 在这里, 我将讨论 2019 年用于使用 Selenium webDriver 和 Java 执行测试自动化的前五大 Java 测试框架. 我还将重点介绍这些顶级 Java 测试框架的独特之处.
1. JUnit
Kent Beck 和 Erich Gamma 开发的 JUnit, 它是 xUnit 的一个实例. 其背后的主要目的是使 Java 开发人员能够编写脚本并执行可重复的测试用例. 它通常用于测试小块代码. 您还可以通过将 JUnit 与 Selenium WebDriver 集成用于 Java 测试自动化来执行网站的自动化测试. 无论何时添加任何新代码, 您都需要重新执行整个测试用例并确保没有破损.
(1) 先决条件
该框架与 Selenium WebDriver for Java 高度兼容, 原因是 JUnit 是一个基于 Java 的框架. 作为一些先决条件, 您需要:
在计算机中安装最新版本的 JDK.
下载最新版本的 JUnit 并设置环境.
熟悉面向对象编程语言 (尤其是 Java) 中的应用程序开发.
(2) 使用 JUnit 的优点和缺点?
JUnit 有几个优点:
在测试驱动的环境中工作的开发人员发现它非常有用, 因为他们被迫阅读代码并查找是否存在异常.
早期检测到错误, 从而产生更可靠的代码.
开发更具可读性和无错误的代码可以起到增强信心的作用.
使用最新版本的 JUnit(版本 4), 可以轻松识别异常. 您甚至可以执行在旧版本的 JUnit 中编写的测试用例.
您也可以将它与 Java 5 或以上版本一起使用.
JUnit 的唯一缺点是:
该框架无法执行依赖性测试. 这就是我们需要 TestNG 的地方.
(3) JUnit 是您的顶级 Java 测试框架吗?
实现过程在两个框架中都是不同的. 此外, 由于 JUnit 已经使用了很长时间, 因此有更好的社区支持, 并且它已被定义为使用 Selenium WebDriver 进行基于 Java 的应用程序的单元测试的标准. 虽然 TestNG 的用户很少, 但社区非常庞大并且每天都在增长. 因此, 我们可以得出结论, TestNG 或 JUnit 之间对 Java 测试框架的选择完全取决于应用程序的性质和要求.
2. JBehave
我们都知道行为驱动开发或 BDD. 它是一种以透明的方式向业务用户描述验收测试的测试类型. JBehave 是另一个用于 BDD 测试的 Java 测试框架, 主要用于 Selenium WebDriver for Java. 引入 JBehave 背后的主要目标是让新手能够轻松理解并熟悉 BDD. 它是一种设计理念, 使应用程序的测试阶段更多地基于其行为.
(1) 先决条件
使用 JBehave 的理想方法是与 Eclipse 集成. 为此, 除了 JDK1.7 及更高版本以及 Indigo 上面的任何 Eclipse IDE 之外, 您还需要几个 jar 文件, 例如:
- Junit-4.1.0.jar
- Jbehave-core-3.8.jar
- Commons-lang-2.4.jar
- Paranamer-2.5.jar
- Freemarker-2.3.9.jar
- Org.apacje.commons.io.jar
- Org.apache.commons.collections.jar
- Plexus-utils-1.1.jar
(2) JBehave 的优点和缺点
与所有其他 BDD 测试框架一样, JBehave 在许多方面也具有优势.
通过在具有类似规范的不同项目上工作的不同开发团队之间实现更好的协调, 实现行为驱动开发的最重要目的.
由于规范具有类似的格式, 项目经理和利益相关者可以更清楚地了解开发团队和 QA 团队的输出.
由于 JBehave 具有推理和思考的细节, 因此产品具有更好的规格.
JBehave 使用半正式语言, 它还有一个域词汇表, 有助于在团队结构中保持一致的行为.
缺点:
BDD 测试工具的成功主要取决于项目中涉及的不同成员之间的沟通, 利益相关者, 开发人员, 测试人员以及组织的管理. 缺乏沟通可能会导致无法回答的问题和疑问, 这可能最终导致错误的申请或应用程序无法满足业务要求, 从而导致所有各方互相指责.
(3) JBehave 是您的顶级 Java 测试框架吗?
JBehave 的工作方式与 Serenity 相同. 但是, 如果您的目标是使自动验收测试更有效, 那么将 Serenity 与 JBehave 集成以获得更好的测试体验是理想的选择. 这是因为 Serenity 的核心概念基于 BDD 开发, 它还使用户能够编写功能强大且丰富的测试报告. 我们将在下一节中详细讨论它.
3. Serenity
Serenity 是一个开源库, 用于行为驱动的测试. 该框架可帮助您编写验收标准, 这些标准结构良好且维护更多. 它扩展了 JUnit 和 WebDriver 的功能. 最初, 它被称为修昔底德. 名称改变背后的原因只不过是发音的难度. 不过, 旧名称可以在引用时使用.
安装 Serenity 的先决条件是什么?
由于该框架是基于 Java 的, 因此您显然需要 Java 或任何其他面向对象编程语言的知识和经验. 除此之外, 在您的工作站中, 您将需要:
JDK 5 或更高版本.
Maven 3.0 或以上任何版本.
IDE 工具 - Eclipse 通常是所有开发人员首选的, 因为 Maven 和 Eclipse 的组合更易于使用.
4. TestNG
Cedric Beust 创建了 TestNG, 这是一个基于 Java 的开源自动化测试框架, 受 JUnit 的启发. 但是, 它更强大. NG 意味着 TestNG 中的下一代. 该框架旨在在集成期间以更好的方式执行. 该框架可帮助开发人员进行排序, 分组和参数化等功能, 从而使新测试用例更加灵活, 并消除了之前使用的框架的缺点.
(1) 安装 TestNG 的先决条件
要安装 TestNG, 您需要:
系统中安装了最新版本的 JDK.
最新版本的 Eclipse
Java 或任何其他面向对象编程语言的知识和实践经验
(2) TestNG 的优点和缺点
除了克服旧框架的缺点之外, TestNG 还有几个优点:
该框架使您能够在多个代码片段上运行并行测试.
在测试用例执行期间, 您可以生成 html 报告.
可以根据优先级对测试用例进行分组和排列. 只需要让框架运行数据库测试或前端测试或任何你想要的东西, 执行测试就会简单得多.
您可以参数化数据并使用注释来轻松设置优先级.
唯一的缺点是:
这取决于您的要求. 如果您的项目不需要测试用例优先级, 则可能不想使用 TestNG. 此外, 设置 TestNG 需要一点时间.
(3) TestNG 是您最好的 Java 测试框架吗?
虽然 JUnit 执行与 TestNG 相同的所有功能, 但它肯定有其局限性. 当单独完成测试时, JUnit 是完美的. 但是当存在依赖性时; 您无法控制先执行哪个测试. TestNG 允许您以任何您想要的顺序运行测试用例, 从而帮助您. 此外, 它还有助于参数化测试. 虽然 JUnit 4.5 中已经存在此功能, 但 TestNG 更有效. 如果您的项目很复杂并且可能需要一百多个测试用例, 那么花一些时间设置 TestNG 而不是依赖于 JUnit 是理想的.
5. Selenide
Selenide 由 Selenium 提供支持, 是一种用于为 Java 应用程序编写稳定, 精确和富有表现力的 UI 测试用例的流行工具. 像 Ajax 这样的现代 Web 技术的测试具有某些复杂性, 例如超时. WebDriver 是用于 UI 测试的流行工具, 但它缺乏处理超时的功能. Selenide 以简单的方式处理所有这些问题. 此外, 它更容易抓住和学习. 您无需任何 Google 要求并搜索教程. 您需要做的就是专注于业务逻辑, 只需几行简单的代码, 您的工作就会完成.
(1) 使用 selenide 的先决条件是什么?
selenide 的安装尽可能简单. 如果您使用的是 Maven, 则需要在 pom.xml 文件中添加以下行.
(2) selenide 的优点和缺点
在应用程序的前端层, 在服务器端使用 Java, 测试人员面临的最常见问题是超时. 您编写的测试用例目前可能正常工作, 但几天之后, 也许某些 Ajax 请求将比现在花费更多时间或者某些 JavaScript 将运行得更慢. 此外, 您的系统可能同时运行另一个进程, 导致测试用例失败. 更不幸的是, 你可能花了几天时间找出这些问题的根源. Selenide 通过以下方式帮助您:
简洁的测试用例编写过程, 消除了超时问题.
支持使用 AngularJS 开发的应用程序的测试
减少了传统 Selenium 工具使用的大多数命令.
到目前为止, 我们还没有发现使用 Selenide 有任何明显的缺点.
(3) Selenide 是您最好的 Java 测试框架吗?
对于 UI 测试, 除了 Selenium WebDriver(Selenide 的父框架)之外, 没有更好的基于 Java 的框架. 显然, WebDriver 无法解决由 Ajax Timeout 或运行缓慢的 JavaScript 或任何需要时间加载的动态内容引起的问题. 为了克服这些问题, 我们之前在测试用例中使用了 "wait_until" 或 "sleep" 方法. 有了 Selenide, 我们不再需要考虑这些问题了. 只关注业务逻辑, 测试用例可以很好地满足其目的.
在当前的敏捷时代, 开发人员也需要参与测试. 了解测试知识的重要性是专业 Java 开发人员与业余爱好者的区别. 您没有必要成为专家, 但至少您应具备编写可自动验证代码的测试用例的基本知识. 在本文中, 我们通过了五个工具, 这些工具是全球开发人员首选的 UI 测试, 单元测试和应用程序的 BDD 测试. 根据比较结果, 我们可以得出结论, 如果您对自己的工作很诚恳, 并希望成为专家开发人员和测试人员, 那么上面提到的工具就会在您的日常任务中发挥作用.
来源: http://developer.51cto.com/art/201904/594756.htm