几十年来,Java一直是开发应用程序服务器端层的首选编程语言。 尽管JUnit一直在与开发人员一起帮助他们进行自动化的单元测试,但是随着时间的推移和测试的发展,当自动化测试不断增长时,已经开发了许多基于Java的开源框架, JUnit在验证和业务逻辑方面。 在这里,我将讨论2019年用于使用Selenium WebDriver和Java执行测试自动化的5个顶级Java测试框架。 我还将重点介绍这些顶级Java测试框架的独特之处。
Kent Beck和Erich Gamma开发人员JUnit,它是xUnit的一个实例。 其主要目的是使Java开发人员能够编写脚本并执行可重复的测试用例。 它通常用于测试一小段代码。 您还可以通过将JUnit与用于Java测试自动化的Selenium WebDriver集成来执行网站的自动化测试。 每当添加任何新代码时,都将要求您重新执行整个测试用例,并确保没有破损。
有哪些先决条件?
该框架与Selenium WebDriver for Java高度兼容,因此,JUnit是基于Java的框架,因此,作为某些先决条件,您需要
- 在您的工作站中安装了最新版本的JDK。
- 下载最新版本的JUnit并设置环境。
- 对面向对象的编程语言(特别是Java)的应用程序开发有很好的了解。
使用JUnit的优缺点?
JUnit有几个优点。
- 在受测试驱动的环境中工作的开发人员发现它非常有益,因为他们被迫阅读代码并查找是否存在异常。
- 尽早检测到错误,从而使代码更可靠。
- 开发更具可读性且无错误的代码可以增强置信度。
- 使用最新版本的JUnit(版本4),可以轻松识别异常。 甚至,您也可以执行用旧版JUnit编写的测试用例。
- 您也可以将其与Java 5或更高版本一起使用。
- 该框架无法执行依赖性测试。 那就是我们需要TestNG的地方。
JUnit的唯一缺点是
- 该框架无法执行依赖性测试。 那就是我们需要TestNG的地方。
JUnit是您的最佳Java测试框架吗?
JUnit和TestNG都执行相同的工作。 它们的功能几乎相同,只是在两个框架中都没有使用JUnit进行依赖测试,并且参数化测试的实现过程不同。 另外,由于JUnit长期使用,因此有更好的社区支持,它已被定义为使用基于Java的Selenium WebDriver for Java应用程序进行单元测试的标准。 尽管TestNG的用户很少,但社区仍然很大,并且每天都在增长。 因此,我们可以得出结论,对于Java测试框架,在TestNG或JUnit之间进行选择完全取决于应用程序的性质和要求。
如果您希望开始使用JUnit作为Java测试框架,则可以通过以下逐步过程使用JUnit&Selenium进行自动化测试,以实现浏览器兼容性。
我们都知道行为驱动开发或BDD。 这种测试类型以对业务用户透明的方式描述了验收测试。 JBehave是用于BDD测试的另一个Java测试框架,主要与Selenium WebDriver for Java一起使用。 引入JBehave的主要目的是使新手可以轻松理解和熟悉BDD。 这是一种设计理念,它使应用程序的测试阶段更多地基于其行为。
有哪些先决条件?
使用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
JBehave的优缺点
像所有其他BDD测试框架一样,JBehave在许多方面也具有优势。
- 通过使从事相似规格的不同项目的不同开发团队之间更好地协调,可以达到行为驱动开发的最重要目的。
- 由于规范的格式相似,因此项目经理和利益相关者可以更好地了解开发团队和质量检查团队的输出。
- 由于JBehave具有详细的推理和思考功能,因此产品具有更好的规格。
- JBehave使用半正式语言,并且还具有领域词汇表,该词汇表有助于在团队结构中保持一致的行为。
嗯,与其他任何BDD测试工具一样,JBehave只有一个缺点。
- BDD测试工具的成功主要取决于项目中不同成员,利益相关者,开发人员,测试人员以及组织管理层之间的沟通。 缺乏沟通可能会导致无法回答的问题和疑问,最终可能导致错误的应用程序或不满足业务要求的应用程序,从而导致所有各方互相指责。
JBehave是适合您的最佳Java测试框架吗?
JBehave的工作方式与Serenity相同。 但是,如果您打算提高自动验收测试的效率,则最好将Serenity与JBehave集成在一起,以利用更好的测试体验。 这是因为Serenity的核心概念基于BDD开发,并且还使用户能够编写功能强大且丰富的测试报告。 我们将在下一节中对此进行更多讨论。
Serenity是一个用于行为驱动测试的开源库。 该框架可帮助您编写结构合理且维护更完善的验收标准。 它扩展了JUnit和WebDriver的功能。 最初,它被称为修昔底德。 更名的原因仅仅是发音困难。 仍然可以在引用时使用旧名称。
安装Serenity的前提条件是什么?
由于该框架是基于Java的,因此您显然需要Java或任何其他面向对象的编程语言的知识和经验。 除此之外,在您的工作站中,您将需要
- JDK 5或更高版本。
- Maven 3.0或以上任何版本。
- IDE工具–所有开发人员通常首选Eclipse,因为Maven和Eclipse的组合更易于使用。
宁静的利与弊
让我们看一看Serenity带给行为驱动开发世界的优势。
- 该框架可帮助测试人员创建REST服务的测试用例。
- 用户不必花费大量时间来维护或构建自己的自动化框架。
- 它在测试用例的定义和理解及其实现方式之间保持平衡,而不是界限。
- 它可以与许多自动化框架(如Selenium,JBehave),基于Java的高级开发框架(如Spring)以及甚至与JIRA之类的持续集成工具集成在一起。
Serenity的唯一缺点就像JBehave。 为了利用其支持行为驱动开发的完整功能,需要在项目参与者之间进行持续的沟通。
Serenity是最适合您的Java测试框架吗?
该工具主要用于报告验收标准。 但是,使用Serenity编写的报告比JBehave或任何其他BDD框架提供的信息丰富得多。 它还可以帮助开发人员编写质量更高的自动化测试案例,并为RestAssured和Selenium WebDriver提供支持,从而使测试人员可以更快,更轻松地编写基于自动化的验收测试标准。
Cedric Beust创建了TestNG,这是一个受JUnit启发的基于Java的开源测试框架。 但是,它功能更强大。 NG表示TestNG中的下一代。 该框架旨在在集成期间以更好的方式执行。 该框架为开发人员提供了诸如排序,分组和参数化之类的功能,从而使新的测试用例更加灵活,并消除了先前使用的框架的缺点。
安装TestNG的前提条件
要安装TestNG,您将需要
- 系统中已安装最新版本的JDK。
- 最新版本的Eclipse
- Java或任何其他面向对象的编程语言的知识和动手经验
TestNG的优缺点
除了克服旧框架的缺点之外,TestNG还具有许多优点。
- 该框架使您可以在多个代码段上运行并行测试。
- 在执行测试用例期间,您可以生成一个HTML报告。
- 测试用例可以根据优先级进行分组和安排。 仅通过要求框架运行数据库测试或前端测试或任何您想要的东西,执行测试就容易得多。
- 您可以参数化数据并使用批注轻松设置优先级。
唯一的缺点是
- 这取决于您的要求。 如果您的项目不需要测试用例的优先级,则可能不希望使用TestNG。 此外,设置TestNG需要一些时间。
TestNG是最适合您的Java测试框架吗?
尽管JUnit执行与TestNG相同的功能,但是它具有一定的局限性。 当单独进行测试时,JUnit是完美的选择。 但是,当存在依赖性时,您将无法控制首先执行哪个测试。 TestNG允许您以所需顺序运行测试用例,从而为您提供帮助。 此外,它还有助于参数化测试。 尽管此功能已在JUnit 4.5中提供,但TestNG更为有效。 如果您的项目很复杂并且您可能需要一百多个测试用例,那么花一些时间并设置TestNG而不是依赖JUnit是理想的选择。
如果您是TestNG的新手,那么这里是一份完整的指南,用于运行您的第一个TestNG自动化脚本,以使用带有Java的Selenium WebDriver来执行自动跨浏览器测试。
Selenide由Selenium提供支持,是一种流行的工具,用于为Java应用程序编写稳定,精确和富于表现力的UI测试用例。 对现代Web技术(如Ajax)进行测试具有一定的复杂性,例如超时。 WebDriver是用于UI测试的流行工具,但缺少处理超时的功能。 硒化物以简单的方式处理所有这些问题。 另外,它更容易掌握和学习。 您不需要Google的任何要求,也可以搜索教程。 您需要做的只是专注于业务逻辑,仅需执行几行简单的代码即可完成您的工作。
使用硒化物的前提条件是什么?
Selenide的安装非常简单。 如果使用的是Maven,则需要在pom.xml文件中添加以下几行。
com.codeborne< /groupId >
selenide< /artifactId >
5.1.0< /version >
test < /scope > < /dependency >
如果使用的是Ivy,则需要在ivy.xml文件中添加
< /dependencies > < /ivy-module >
就像这样,该框架已为您准备开始测试。
硒化物的优缺点?
在服务器端使用Java的应用程序的前端层中,测试人员面临的最常见问题是超时。 您编写的测试用例目前可能工作正常,但是几天后,也许一些Ajax请求将比现在花费更多的时间,或者某些Javascript的运行速度会变慢。 另外,您的系统可能同时运行另一个进程,从而导致测试用例失败。 更不幸的是,您可能需要花费数天的时间才能找出这些问题的根源。 硒化物可以帮助您
- 简洁的测试用例编写过程消除了超时问题。
- 支持对使用AngularJS开发的应用程序进行测试
- 减少了传统Selenium工具使用的大多数命令。
到目前为止,我们还没有发现使用硒化硒的明显缺点。 如果您发现任何可能影响您工作的限制,请告诉我们。
Selenide是最适合您的Java测试框架吗?
对于UI测试,除了Selenide的父框架Selenium WebDriver之外,没有更好的基于Java的框架。 显然,WebDriver无法解决由Ajax超时,JavaScript运行缓慢或任何需要花费时间加载的动态内容引起的问题。 为了克服问题,我们先前在测试案例中使用了“ wait_until”或“ sleep”方法。 使用Selenide,我们不再需要考虑那些问题。 仅关注业务逻辑,测试用例就可以很好地实现其目的。
如果您打算选择Selenide作为自动化测试的Java测试框架,那么这里的指南可以帮助您使用Selenide,IntelliJ和Maven运行Selenium自动化测试。
在当前的敏捷时代,开发人员还需要参与测试。 知识和测试的重要性是使专业Java开发人员与业余爱好者区分开来的原因。 不必一定是专家,但是至少您应该具备编写自动验证代码的测试用例的基本知识。 在本文中,我们介绍了5种工具,这些工具为应用程序的UI测试,单元测试和BDD测试提供了全球开发人员的首选。 根据比较,我们可以得出结论,如果您真诚地工作,并希望成为专家开发人员和测试人员,那么上面提到的工具将对您的日常工作有用。
翻译自: https://www.javacodegeeks.com/2019/03/top-5-java-test-frameworks-automation-2019.html