gradle junit5_JUnit 5和Selenium –使用Gradle,JUnit 5和Jupiter Selenium设置项目

gradle junit5

Selenium是一组支持浏览器自动化的工具和库,主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver,它提供客户端库,JSON有线协议(与浏览器驱动程序进行通信的协议)和浏览器驱动程序。 Selenium WebDriver的主要优点之一是,它受所有主要编程语言的支持,并且可以在所有主要操作系统上运行。

在本教程中,我将使用Gradle与Java,JUnit 5和Selenium Jupiter一起完成流行的TodoMVC应用程序的测试自动化项目的设置。 您将了解Selenium的PageFactory实现页面对象模式。 您还将了解并行测试执行,测试执行顺序,参数化测试等等。

关于本教程

您正在阅读带有Selenium WebDriverJUnit 5的第一部分-教程

本教程中的所有文章:

  • 从头开始设置项目–使用JUnit 5和Jupiter Selenium进行Gradle

接下来的是:

  • 使用Selenium内置的PageFactory实现Page Object Pattern
  • 改善项目配置–并行执行测试,测试执行顺序,参数化测试,AssertJ等

本教程的源代码可以在Github上找到

先决条件

首先,Java JDK是必需的,并且必须将其安装在系统中。 由于Java 11中的许​​可更改,我将使用Java 12,并且我建议安装OpenJDK而不是Oracle JDK。您还需要Gradle来启动一个新项目和您喜欢的Java IDE –我建议使用IntelliJ IDEA Community或Professional。 您也可以选择安装Git版本控制系统。

为了管理(安装,更新,卸载)我建议使用软件包管理器的工具。 如果您使用的是Windows,则可以使用Chocolately ,如果您使用的是macOS,则应使用Homebrew 。

总结起来,请确保在本文中使用该项目时已安装以下工具,并且可供使用:

  • Java JDK –建议使用最新的Java JDK版本
  • Gradle – 在设置项目时需要,建议使用Gradle 5.6+
  • 建议您最喜欢的Java IDE – IntelliJ IDEA社区或专业人士
  • Chrome浏览器–用于运行Selenium测试
  • 终端仿真器–用于执行Shell命令,至少对Unix命令具有基本支持。 在Windows中,它可以是Cmder (带有Git),在macOS中,我建议使用iTerm2
  • Git –如果您想跟踪源代码历史记录

从头开始设置项目

要创建一个基于Gradle的空项目,请打开您喜欢的终端并输入:

 mkdir junit5-selenium-todomvc-demo  cd junit5-selenium-todomvc-demo  gradle init --type basic --dsl groovy 

生成的项目是一个空的DIY项目-没有插件,也没有依赖项。 它带有可删除的冗余settings.gradle

 rm settings.gradle 

Java和JUnit 5

对于使用JUnit 5的基本Java项目配置,将以下内容添加到build.gradle

 plugins { id 'java'  }  repositories { mavenCentral()  }  dependencies { testImplementation( 'org.junit.jupiter:junit-jupiter:5.5.1' )  }  test { useJUnitPlatform() testLogging { events "passed" , "skipped" , "failed" }  } 

上面的DSL配置了Gradle的Java插件( plugins ),为我们提供了使用Gradle构建基于Java的项目的功能。 该项目使用Maven存储库( repositories )下载在项目中声明的项目依赖项( dependencies )。 将项目的测试实现依赖项设置为JUnit 5( testImplementation ),并调整任务( test )以确保在使用Gradle执行测试时使用JUnit 5。

可以通过在终端中执行Gradle构建来验证配置:

 ./gradlew build 

构建成功:

 BUILD SUCCESSFUL in 0s  1 actionable task: 1 executed 

./gradlew命令运行Gradle Wrapper而不是全局Gradle发行版。 该项目是由Gradle Wrapper生成的,因此执行任务和使用该项目根本不需要全局Gradle分发。

注意:如果您正在寻找用于Gradle或Maven的JUnit 5项目模板,请签出官方的JUnit 5 Samples Github存储库: https : //github.com/junit-team/junit5-samples

JUnit木星

为了简化项目中Selenium WebDriver的配置,我将使用Selenium Jupiter,它是JUnit 5扩展,旨在简化JUnit 5测试中对Selenium(WebDriver和Grid)的使用。 它是一个单独的依赖项,需要将其添加到build.gradle依赖项列表中:

 dependencies { testCompile( 'io.github.bonigarcia:selenium-jupiter:3.3.0' )  } 

Selenium Jupiter库提供了与Selenium和Appium的集成。 Selenium Jupiter支持本地和远程浏览器,Docker容器中的浏览器(需要Docker引擎)以及基于Selenide的浏览器配置。 它在内部使用WebDriverManager来管理浏览器驱动程序。

注意:不要惊叹于您的项目中有很多库。 Selnium Jupiter有很多依赖性。 要查看所有项目依赖项(包括传递性依赖项),请执行以下命令: ./gradlew dependencies

目录和项目文件

该项目创建时没有Java源文件。 要创建初始目录和第一个测试,可以执行以下命令:

 mkdir -p src/test/java/pl/codeleak/demos/selenium/todomvc  touch src/test/java/pl/codeleak/demos/selenium/todomvc/SeleniumTest.java 

SeleniumTest.java文件包含非常基本的测试,确认项目已正确配置。 该测试使用Selenium Jupiter提供的JUnit 5扩展,并且只有一个测试,没有断言:

 package pl.codeleak.demos.selenium.todomvc;  import io.github.bonigarcia.seljup.SeleniumExtension;  import org.junit.jupiter.api.Test;  import org.junit.jupiter.api.extension.ExtendWith;  import org.openqa.selenium.chrome.ChromeDriver;  @ExtendWith (SeleniumExtension. class )  SeleniumTest { class SeleniumTest { @Test void projectIsConfigured(ChromeDriver driver) {}  } 

运行测试

执行Gradle构建应确认测试通过:

 ./gradlew build  pl.codeleak.demos.selenium.todomvc.SeleniumTest > projectIsConfigured() PASSED  BUILD SUCCESSFUL in 1s  3 actionable tasks: 2 executed, 1 up-to-date 

您可能已经注意到,在执行任务期间,Chrome浏览器已打开,然后关闭。 这仅确认所有驱动程序配置都是由Selenium Jupiter在后台进行的(使用WebDriverManager库)。 您还注意到,此测试没有设置和清除代码。 相反,我们 ChromeDriver实例直接注入到需要测试的地方。 Selenium Jupiter就是这样使用JUnit 5扩展机制注入参数进行测试的。

创建Git存储库

项目的初始设置已完成。 在开始实际工作之前,现在可以将项目设置存储在Git存储库中。 如果已安装Git,请运行以下命令来创建新的存储库:

 git init 

编辑.gitignore文件以排除要从存储库中跳过的文件和目录:

 .gradle  .idea  *.iml  build  out 

执行以下命令以将文件添加并提交到存储库:

 git add .  git commit -m 'Initial project setup' 

将项目导入到IDE

请注意,到目前为止,所有工作都是在没有IDE的情况下完成的(不是完全正确–我在IDE的帮助下创建的测试)。 通常,这是项目配置中非常重要的方面:始终使项目IDE独立。 证明您可以使用单个shell命令执行构建。 这将带来收益-特别是当您要使用持续集成工具执行构建时。

无论如何,使用IntelliJ,该项目将毫无问题地运行。 午餐,打开项目目录,并将其导入为Gradle项目。

现在您已经准备好开始开发测试并改善项目。 但是请记住,如果要进行任何配置更改,建议您不时使用IDE外部的终端对其进行测试。

下一步

在本教程的下一部分中,您将学习有关Page Object Pattern的一些基础知识,以及如何使用Selenium内置的PageFactory实现它。

翻译自: https://www.javacodegeeks.com/2019/09/junit-selenium-setup-project-gradle-jupiter-selenium.html

gradle junit5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 两块硬盘挂载不上_win10 轉 Ubuntu

目前用了win10兩三年。發現越來越慢,況且已習慣mac OS,所以想用自己的機子來裝個雙系統Linux,慢慢的將win的東西都轉到Ubuntu上。已清空一個磁盤300G,打算就是在這300G裡裝一個Ubuntu,不知道是否夠用(雖然很想裝在三星…

包+类导入+静态导入+类放入包中+包作用域

【0】README 0.1)本文转自 core java volume 1, 旨在理清 包和类导入的相关知识; 【1】 包 1.1) java 允许使用包将类组织起来,包可以方便组织代码,并将自己的代码与别人提供的代码库分开管理&#xff1b…

selenium自动化测试_使用Selenium自动化测试处理多个浏览器选项卡

selenium自动化测试使用Selenium进行自动化测试一直是将萌芽的自动化测试人员培养为专业人员的生命线。 Selenium是开源的,在全球范围内被广泛采用。 结果,您会得到社区的大力支持。 提供了与Selenium绑定的不同语言的多种框架。 因此,您已经…

qt和c#怎么选_请问目前做windows桌面应用程序,MFC、QT、C#哪个更好?

回答问题之前,先装个逼——没有主导过生命周期三年以上的桌面软件项目的,闭嘴。你连一个桌面软件项目的生命周期都没经历过,你凭什么做技术选型?凭信仰吗?装逼结束,正文开始。首先,非主流技术和…

java 白皮书的关键术语

【0】README 0.1) 本文转自 core java volume 1,仅供了解,所谓爱屋及乌嘛; 0.2) java的设计者编写了颇有影响力的白皮书,用来解释设计的初衷以及完成的情况,并发布了一个摘要;【1】…

当集合a为空集时a的取值范围_高中数学必修一第一章集合分节练习和章末测试题含答案[1] 2...

高中数学必修1 第一章 集合 分节练习和章末综合测试题含答案1 集合的含义与表示1、下列各组对象能否组成一个集合?(1)接近于0的数的全体; (2)2的近似值的全体; (3)平面上到点O 的距离等于1的点的全体; (4)正三角形的全体&#xff…

spring jpa 流式_从响应式Spring Data存储库流式传输实时更新

spring jpa 流式这篇文章详细介绍了从数据库到对该数据感兴趣的任何其他组件进行流更新的幼稚实现。 更准确地说,如何更改Spring Data R2DBC存储库以向相关订阅者发出事件。 对R2DBC和Spring的一点背景知识将对这篇文章有所帮助。 我以前的著作《 使用 Microsoft S…

弹窗页面交互_UI进阶知识-信息提交类弹窗该如何设计?

原文作者:风筝KK 信息提交类弹窗大家应该都比较熟悉,和其他弹窗的区别在于他有输入、选择等操作,比如我们常见的输入验证码、留言回复、充值转账、任务设置等。看上去设计都比较简单,但是当你验收时就会发现问题,为什么…

selenium并行_如何在不同的浏览器中设置Selenium网格以并行执行

selenium并行到目前为止,Selenium是最常用的Web自动化测试工具。 如此受欢迎的原因之一是Selenium的自动跨浏览器测试功能。 Selenium自动化测试可以帮助您在所有主要浏览器,所有主要操作系统甚至移动设备浏览器上进行测试。 您可以在所有功能测试中获得…

java 发展简史

【0】README 0.1) 本文转自 core java volume 1,仅供了解Java 的发展历史,它的前世今生,所谓知己知彼,百战不殆(just a joke) ; 【1】java 发展简史 1.1)java的历史要…

axios代理跨域 cli4_跨域本质及解决办法

1、什么是跨域?2、如何解决?跨域是前端所独有的,后端不存在跨域问题。是浏览器的一种安全保护手段,为了防止别人抓取、篡改你的网站数据信息。遵循同源策略、同协议(http)、同域名、同端口,少一…

如何使用eclemma插件_如何集成和使用EclEmma插件来获得良好的Junit覆盖率

如何使用eclemma插件你好朋友, 如果编写好的代码很重要,那么编写覆盖所有业务逻辑的优良Junit测试用例也同样重要。通过编写覆盖业务逻辑的Junit测试用例,我们实际上确保代码的每种方法都能正常工作按照预期进行,因此减少了在软…

Java 相关术语

【0】README 0.1) 本文转自 core java volume 1,仅供了解Java 的相关术语,包括像JDK、JRE等 ;而且我感觉,了解了这些过后,你会更懂 Java, 更热爱它; 【2】Java术语 2.1)…

一般试卷的纸张大小是多少_pdf试卷怎么打印在A3纸上

一般的PDF试卷的纸张大小都是A4大小,没有现成A3大小Word文档的试卷时,需要将PDF试卷转换Word文档之后进行排版,如何实现这一操作呢?请接着往下学习吧~一、将试卷的PDF格式转换为Word1.进入PDF快转官网,点击下载按钮下载…

设置 JDK环境变量(Windows)

【0】README 0.1) 本文转自 core java volume 1,旨在说明如何设置 JDK环境变量,以及为什么要设置的问题;【1】JDK目录树 Attention)就Java 而言, docs 和 src 是两个最有用的子目录:因为 docs …

光流法测试代码_高效的企业测试-工作流和代码质量(4/6)

光流法测试代码本文的这一部分将讨论在开发过程中拥有有效工作流程的影响,以及适当的测试代码质量如何使我们能够创建可维护的测试,尤其是对于复杂项目。 开发工作流程和管道 编程是一项流程活动,我们开发人员应该对保持工作流程高效和缩短…

水泵怎么做_泳池设备日常怎么维护和保养?

点击上方“蓝字”,关注我们.●电机突然停止运转怎么办?1.检查电路和电线接口等。2.检查输送到电机的电压是否过低(通常由于电源线太小而引致的电流不足)。3.检查是否有过载而引起电流过大。注:Hayward 水泵的单相电机有自动过热保护装置。该装…

鸡肉部位英文对照_鸡肉和鸡蛋–测试前解决Spring属性

鸡肉部位英文对照考虑一个负责进行远程调用和获取详细信息的服务类: ... public class CitiesService { private final WebClient.Builder webClientBuilder; private final String baseUrl; public CitiesService( WebClient.Builder webClientBuilder, Value ( &…

git pull忽略指定文件_Git忽略提交规则

在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用git add .的时候,遇…

lombok var_使用var,Lombok和Fluxtion轻松处理事件

lombok var介绍 在本文中,我将结合使用Lombok和Fluxtion这两种产品,以展示工具如何在减少代码编写和交付时间的同时提高代码的可读性。 使用Java 10中的var可以进一步改善这种情况。 产品和var都在构建时使用推断来加速开发。 Fluxtion的精神是最大程度…