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

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: executed 1 

./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

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

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

相关文章

机器学习相关知识 大佬博客整理

一 马尔科夫链详细介绍 https://www.cnblogs.com/traditional/p/12612010.html

ns3gym与ns3ai的安装方法

编译运行的常用命令 1,针对ns3主项目的编译命令 分两步:第一,./waf configure;第二,./waf(或者./waf build) 详见《开源网络模拟器ns3》P13 2,针对多脚本同时运行的编译命令 ns3…

Ubuntu16.04安装WPS

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循<a href"http://creativecommons.org/licenses/by-sa/4.0/" target"_blank" rel"noopener"> CC 4.0 BY-SA </a>版权协议&#xff0c;转载请附上原文出处链接和本声明。 原文…

网络仿真中数据生成相关

1 流量激励生成 十分钟泊松分布 了解泊松分布与指数分布的关系

apache hadoop_通过Apache Hadoop大规模扩展Apache Solr实时实时索引

apache hadoop播客的第22集是与Patrick Hunt的谈话 我们讨论了Apache Solr&#xff08;上游&#xff09;中的新工作&#xff0c;使它可以在Apache Hadoop上工作。 Solr支持将其索引和事务日志文件写入和读取到HDFS分布式文件系统。 这不使用Hadoop Map-Reduce处理Solr数据&…

显示/隐藏我的电脑与回收站

Windows徽标键i”——打开——“Windows设置”——点击——“个性化”——进入——“主题”——下滑——“相关设置”——中的——“桌面图标设置”。把勾勾全去掉即可。

没有Javax的Jakarta EE:这次世界也不会结束

如果您错过了新闻&#xff0c; Oracle将向Eclipse基金会捐赠Java EE规范 。 这项决策在规范过程中经历了相当长时间的休眠&#xff0c;在此过程中&#xff0c;人们理所当然地怀疑Oracle对Java EE失去了战略兴趣。 起初&#xff0c;Java EE和更广泛的Java社区很好地满足了捐赠规…

NS3Gym python侧代码分析

argparse库参考链接: https://docs.python.org/zh-cn/3/howto/argparse.html

火狐浏览器常用操作

1 建立书签文件夹并在标签栏显示 https://zhidao.baidu.com/question/1510197150305270220.html

pat乙级 1007 素数对猜想(C++)

题目 让我们定义dn为&#xff1a;dn pn1 −pn &#xff0c;其中p​i​​ 是第i个素数。显然有d​1​​ 1&#xff0c;且对于n>1有d​n​​ 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105 )&#xff0c;请计算不超过N的满足猜想…

如何在不增加人员的情况下自动化API安全程序

在这篇文章中&#xff0c;我们将撰写一篇综合文章&#xff0c;内容涉及如何在不增加人员的情况下自动执行API安全程序。 在现代世界中&#xff0c;数据对于提供者和消费者都至关重要。 数据科学的出现证明了这一事实。 对于某些组织&#xff0c;整个业务模型是建立在信息交换之…

python错误bug调试问题汇总

1 Python-出现“Non-ASCII character ‘\xe6‘ in file“错误解决方法 2 python中for循环语句使用 3 Python解决两个整数相除只得到整数部分问题 4 python2的print和python3的print()

pat 乙级 1001 害死人不偿命的(3n+1)猜想(C++)

题目 卡拉兹(Callatz)猜想&#xff1a; 对任何一个正整数 n&#xff0c;如果它是偶数&#xff0c;那么把它砍掉一半&#xff1b;如果它是奇数&#xff0c;那么把 (3n1) 砍掉一半。这样一直反复砍下去&#xff0c;最后一定在某一步得到 n1。卡拉兹在 1950 年的世界数学家大会上公…

C++编译的bug解决方法

1 编译错误 jump to case label [-fpermissive]

jpa 测试_使用外星人进行测试:如何使用Arquillian测试JPA类型转换器

jpa 测试该帖子与 Aslak Knutsen &#xff08; aslakknutsen &#xff09;一起撰写。 JPA类型转换器为定义实体属性如何持久存储到数据库提供了一种简便的方法。 您可以使用它们来实现许多不同的功能&#xff0c;例如&#xff0c;如上一篇文章中所示&#xff1a;加密数据&…

pat 乙级 1002 写出这个数(C++)

题目 读入一个正整数 n&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 输入与输出 输入格式&#xff1a; 每个测试输入包含 1 个测试用例&#xff0c;即给出自然数 n 的值。这里保证 n 小于 10^​100​​ 。 输出格式&#xff1a; 在一行内输出…

详细介绍 安装ns3步骤

安装ns3步骤&#xff1a; 准备工作—— 1.[Linux] ubuntu系统安装完成 2.熟悉Linux常用命令 开始安装—— 确保ubuntu已经完成换源---阿里云或清华,个人推荐阿里云 3.安装组件和依赖库 1.快捷键CtrlAltT 打开终端&#xff0c;输入以下命令&#xff1a; sudo apt-get update …

在硒中查找具有链接文本和部分链接文本的元素

Selenium中CSS定位器是一个基本概念&#xff0c;每个旨在使用Selenium执行自动化测试的测试人员都应该意识到这一点。 在Selenium中充分使用CSS定位器可以帮助您以更高效&#xff0c;更彻底的方式执行测试。 我从7年以来一直从事自动化测试行业&#xff0c;并且我经常观察到测试…

浅析C++的三大循环-以100以内的质数求解为例

简介 C三大循环分别是while、do while循环和for循环&#xff0c;其中for循环最为灵活&#xff0c;do while循环和while循环基本一致。 语法格式 //while语法 while(循环控制条件) { 语句 } //do while语法 do { } while(循环控制条件); //for循环 for(变量初始化;循环控制条…

如何找到CSDN的草稿

如何找到CSDN的草稿 Ps&#xff1a;CSDN的草稿箱有点难找