【51CTO.com快译】多年来,Java一直是服务器端应用开发的首选编程语言。随着时间的推移和自动化测试的兴起,业界出现了许多基于Java,并根据不同的业务逻辑而发展起来的开源框架。在此,我向大家介绍并比较五种用到了Java的自动化测试框架。
由Kent Beck和Erich Gamma开发的JUnit是xUnit框架的一个实例。其设计的宗旨是让Java开发人员能够编写出各种脚本、并执行那些可重复的测试用例。因此,JUnit通常被用来测试各种小块的程序代码。同时,您还可以通过将JUnit与Selenium WebDriver相集成,来执行针对某个网站的自动化测试。不过,只要添加了任何新的代码,您都需要重新执行整个测试用例、以确保无任何损坏。
由于JUnit是一种基于Java的框架,因此它与Java的Selenium WebDriver高度兼容。您需要准备如下先决条件:
JUnit与下面将要提到的TestNG具有相似的功能。但是两者在参数化测试的实现过程上不尽相同。由于历史悠久,JUnit拥有更好的社区支持,并被定义为使用Selenium WebDriver进行基于Java类应用单元测试的标准。而TestNG虽然目前用户相对较少,但是其社区规模却日益增长。因此,我们认为:是选择JUnit、还是TestNG作为Java测试的框架,完全取决于目标应用的性质和需求。
当然,如果您已选定了使用JUnit的话,请参考 《使用JUnit和Selenium执行自动化测试》 一文,以针对浏览器的兼容性开展分步测试。
作为测试人员,您一定听说过行为驱动开发(Behavior Driven Development,BDD)。它能够以一种透明的方式,向业务用户描述验收测试。而JBehave正是一种通过Selenium WebDriver来针对BDD开展Java测试的框架。它可以让新手轻松地理解BDD概念,进而基于行为开展应用测试。
安装JBehave的先决条件
用户使用JBehave的理想方法是与Eclipse相集成。因此,除了具有JDK1.7及更高版本,和Indigo以上的任意Eclipse IDE之外,您还需要配备如下jar文件:
JBehave的优点和缺点
JBehave同样也有着其他BDD测试工具一样的缺点:
JBehave与下面将要提到的Serenity有着相同的工作方式。但是,如果您的目标是使得自动验收测试更为有效的话,那么将Serenity与JBehave相集成,则会获得更好的测试体验。
Serenity同样是一种能被用于行为驱动测试的开源库。该框架可帮助您编写出各种结构良好、且易于维护的验收标准。它在一定程度上扩展了JUnit和WebDriver的功能。
由于该框架基于Java,因此您显然需要具备Java、或其他任何面向对象编程语言的知识与经验。此外,您的电脑上还需要有:
针对行为驱动测试,Serenity具有如下优点:
与JBehave类似,Serenity的唯一缺点便是:为了充分发挥其支持行为驱动开发的完整功能,项目参与者需要保持彼此之间的沟通。
由于主要被用于报告验收的标准,因此使用Serenity所写出的报告,比JBehave等其他BDD框架具有更丰富信息量。同时,它还可以帮助开发人员编写出更高质量的自动化测试用例场景。另外,它能够为RestAssured和Selenium WebDriver提供支持,使得测试人员能够更快、更简便地写出基于验收测试标准的自动化用例。
也许是受到了JUnit的启发,由Cedric Beust创建的TestNG也是一种基于Java的开源自动化测试框架,不过它更为强大。此处NG表示“下一代”,因此它能够在集成的过程中采用更好的执行方式。该框架可帮助开发人员实现排序、分组和参数化等功能,进而在消除了以往框架各种缺点的基础上,让新的测试用例更具灵活性。
在弥补过往框架诸多缺点的基础上,TestNG还具备如下优点:
它的唯一缺点是:
TestNG的特点与竞品比较
如前所述,TestNG虽然与JUnit有着相同的功能,但是它补足了JUnit的短板。在面对既有的依赖性,您却无法控制先测试哪个的时候,TestNG允许您以任意顺序运行测试用例。此外,它还有助于实现参数化的测试。虽然JUnit 4.5已经具备了此功能,但是TestNG的实现效率更高。因此,如果您的项目很复杂、并且需要执行上百种测试用例的话,花点时间去设置TestNG是完全值得的。
如果您不太熟悉TestNG的话,请通过参考: https://www.lambdatest.com/blog/a-complete-guide-for-your-first-testng-automation-script/?utm_source=Dzone&utm_medium=blog&utm_campaign=SS-030419&utm_term=arnab 。这是一份TestNG自动化脚本的完整指南,您可以用在Selenium WebDriver上,进行跨浏览器的Java自动化测试。
由Selenium提供的Selenide,可用作为Java应用程序编写稳定、精确且具有友好UI的测试用例。如今,针对Ajax之类Web技术的测试工具日趋复杂,动辄便会出现超时的问题。而Selenide却能够以简单的方式处理该问题。Selenide简单易学,您无需搜索任何相关教程,只需专注于业务逻辑,便可通过几行简单的代码来搞定工作。
Selenide的安装非常简单。如果您使用的是Maven,则只需要在pom.xml文件中添加如下代码行:
com.codeborne selenide 5.1.0 test
如果您使用的是Ivy,请在ivy.xml文件中添加如下代码行:
在测试人员处理那些由Java编写的前端应用时,往往会碰到超时的问题。也许您当前编写的测试用例尚能正常工作。而几天之后,随着某些Ajax请求的增多,相应的JavaScript的运行则可能会慢下来。此外,如果您的系统还同时运行着另一个进程的话,这些都会导致测试用例的失败。您与其花上几天时间去寻找问题的根源,不如让Selenide从如下方面帮助您:
目前,我们尚未发现Selenide的明显缺点。
WebDriver虽然是UI测试的流行工具,但是它无法解决由Ajax超时、JavaScript运行缓慢、以及加载动态内容耗时等一系列问题。过去,我们在测试用例中使用的是“wait_until”或“sleep”方法。如今有了Selenide,我们只要关注业务逻辑便可。可以说,就UI测试而言,除了Selenium WebDriver(Selenide的父框架),没有比它更好的Java框架了。
如果您选定了Selenide作为自动化Java测试框架,请参考: https://www.lambdatest.com/blog/selenium-testing-with-selenide-using-intellij-maven/?utm_source=Dzone&utm_medium=blog&utm_campaign=SS-030419&utm_term=arnab 。该指南能够帮助您使用Selenide、IntelliJ和Maven来进行Selenium的自动化测试。
如今的敏捷(Agile)时代,开发人员时常需要参与到测试环节中。能够了解测试的重要性,往往是Java专业开发人员与业余爱好者之间的区别。虽然您没有必要一定成为该领域的专家,但是您至少应当懂得,如何编写可自动化验证代码的测试用例。希望上述介绍与比较的五种自动化测试框架与工具,能够在UI测试、单元测试、以及针对应用程序的BDD测试中给您提供帮助。
原文标题:Top 5 Java Test Frameworks for Automation in 2019,作者:Arnab Roy
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
【责任编辑:庞桂玉 TEL:(010)68476606】