当前位置: 首页 > news >正文

东坑镇网站建设西宁做网站君博专注

东坑镇网站建设,西宁做网站君博专注,个人网站注册费用,全国首批9所重点马院网站建设问题简介 大多数时候#xff0c;当您需要为Web UI编写功能测试/端到端测试时#xff0c;您最终会使用Selenium #xff0c;它可以被视为Java世界中用于Web UI测试的事实上的工具。 我确定您已经将其用于此类测试。 但是可能同时#xff0c;您遇到了功能测试中一些最常见的… 问题简介 大多数时候当您需要为Web UI编写功能测试/端到端测试时您最终会使用Selenium 它可以被视为Java世界中用于Web UI测试的事实上的工具。 我确定您已经将其用于此类测试。 但是可能同时您遇到了功能测试中一些最常见的问题有些与Web UI测试有关而其他则没有。 例如人们通常在功能测试中发现的主要问题之一是环境的准备运行测试以启动服务器并部署应用程序然后安装/启动数据库还可能是缓存系统等等。在所有服务器上运行使用户可以在本地安装每个服务。 可能会发生一些错误例如安装生产版本中使用的服务器的错误版本重新使用可能与该版本不同的另一本地数据库安装或者例如在生产版本中使用的不同JDK版本中运行它们。 但是还有一些其他更特定于Web UI测试的问题例如浏览器安装或WebDriver属性的配置。 解决第一个问题 为了解决第一个问题您可以想到的最简单的解决方案是使用Docker容器并且当然可以使用Docker组合因为您可以定义和运行多容器Docker应用程序。 因此基本上您在docker-compose文件中定义了运行测试可能需要的所有服务器因此在运行测试时所有服务器都在运行并且使用固定版本更为重要因此可以确保测试始终在已知/期望的特定版本的服务器上运行相同的JDK……而不取决于开发人员/ CI机器中安装了什么。 但是这种方法有一个问题。 您需要专门运行docker-compose up docker-compose down。 当然您可以在构建脚本中自动执行此操作这将解决CI环境中的问题但是如果开发人员希望通过IDE执行测试例如调试那么他需要意识到这一点。 这就是Arquillian Cube解决的问题。 Arquillian Cube是Arquillian扩展它使用docker -compose文件启动和配置在那里定义的所有容器执行测试并最终关闭所有这些容器。 好消息是由于Arquillian使用JUnit以及TestNG和Spock您可以从IDE运行测试而不必担心启动和停止容器因为Docker生命周期由Arquillian Cube管理。 因此定义测试环境的问题的第一部分已由Arquillian Cube修复。 让我们看看如何解决第二个问题。 解决第二个问题 Selenium项目为Docker映像提供了Selenium独立或带有浏览器Firefox或Chrome的Selenium节点以及已安装的VNC服务器。 因此似乎很适合解决必须在本地安装具有具体版本或具体配置的浏览器的问题因为您可以将docker映像与为测试配置的浏览器一起使用。 使用Docker进行测试时的新问题 那很酷但是有一些问题。 第一个是您需要创建一个专门用于测试目的的docker-compose文件尽管这本身并不是一件坏事但是它需要开发人员进行更多的管理才能维护该文件并且当然要一遍又一遍地重复在要使用它的所有项目中定义要使用的浏览器和VNC客户端映像以获取记录以供将来检查。 第二个问题是WebDriver的配置。 针对远程浏览器运行WebDriver时您需要设置浏览器的位置IP并根据需要的功能配置RemoteWebDriver。 因此您必须一次又一次地在所有测试中编写WebDriver配置。 您可以创建一个工厂类该类可以在所有项目中重用这很好但是仍然存在一个问题一些开发人员可能会使用Docker计算机因此IP不会是静态的并且可能每次都会更改其他人可能正在使用本机Docker例如CI管道的某些阶段可能会针对远程完整环境如生产前环境运行测试因此在执行测试之前您需要手动指定Docker主机容器的IP。 第三个问题是您需要指示WebDriver打开页面 webdriver.get“ http://www.google.com”; 问题在于在这种情况下浏览器位于Docker基础架构内部因此您需要设置服务器容器的内部IP因此您不仅需要知道用于连接远程Web驱动程序的Docker主机IP还需要了解内部IP地址。使用以下命令在远程浏览器中打开页面的服务器容器的IP 获取方法。 同样这可能很难以自动方式获得。 但是使用Arquillian Drone和Arquillian Cube之间的新集成解决了所有这些问题。 解决新问题 Arquillian Drone是Arquillian扩展它将Selenium WebDriver集成到Arquillian。 此扩展程序管理WebDriver的配置因此您不需要在所有测试中都重复它也不需要在浏览器的生命周期中重复它。 因此如您所见这对扩展似乎很适合解决这些问题。 无人机负责配置而Cube负责正确配置Selenium / VNC容器并启动和停止它们。 如您所见您无需担心创建用于测试目的的docker-compose文件。 您只需要创建一个用于部署的数据库其余的将由Arquillian负责。 例 首先要做的是创建一个具有必需依赖项的项目。 对于此示例我们使用Maven但您可以使用其他构建工具来实现相同的目的。 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.lordofthejars.helloworld/groupIdartifactIddronecube/artifactIdversion1.0-SNAPSHOT/versiondependencyManagementdependencies!-- Use BOMs to set same versions in all dependencies --dependencygroupIdorg.jboss.arquillian/groupIdartifactIdarquillian-bom/artifactIdversion1.1.11.Final/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.jboss.arquillian.extension/groupIdartifactIdarquillian-drone-bom/artifactIdversion2.0.0.Final/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.jboss.arquillian.selenium/groupIdartifactIdselenium-bom/artifactIdversion2.53.1/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependencies!-- Use standalone mode in Arquillian (no Deployment) --dependencygroupIdorg.jboss.arquillian.junit/groupIdartifactIdarquillian-junit-standalone/artifactIdscopetest/scope/dependency!-- Cube dependencies --dependencygroupIdorg.arquillian.cube/groupIdartifactIdarquillian-cube-docker/artifactIdversion1.0.0.Alpha13/versionscopetest/scope/dependencydependencygroupIdorg.arquillian.cube/groupIdartifactIdarquillian-cube-docker-drone/artifactIdversion1.0.0.Alpha13/versionscopetest/scope/dependencydependencygroupIdorg.assertj/groupIdartifactIdassertj-core/artifactIdversion3.5.2/versionscopetest/scope/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency!-- Drone dependencies --dependencygroupIdorg.jboss.arquillian.extension/groupIdartifactIdarquillian-drone-webdriver-depchain/artifactIdtypepom/typescopetest/scope/dependency/dependencies/project 需要注意的重要一点是您正在使用BOM表定义来设置组件的版本。 然后我们设置Arquillian Standalone依赖项因为我们的测试不会 Deployment方法因为已经在应用程序中使用的Docker映像内创建了部署文件。 最后添加Arquillian Cube和Arquillian Drone依赖项。 下一步是在src / test / resources创建一个名为arquillian.xml的文件该文件用于配置扩展。 ?xml version1.0? arquillian xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://jboss.org/schema/arquillianxsi:schemaLocationhttp://jboss.org/schema/arquillianhttp://jboss.org/schema/arquillian/arquillian_1_0.xsdextension qualifierdocker!-- Not required if native docker or only one docker machine installed --property namemachineNamedev/property!-- Not required if file is in root of classpath --property namedockerContainersFiledocker-compose.yml/property/extension/arquillian 您可以看到 如果使用docker机器则需要指定docker机器名称来启动容器。 如果使用本地Docker则无需设置此属性。 您需要设置相对于docker-compose文件所在项目的根文件夹的位置。 请注意您可以使用任何其他名称。 您可以自定义WebDriver以及配置Arquillian Drone https://docs.jboss.org/author/display/ARQ/Drone 但是对于此测试默认值就足够了。 请注意现在默认浏览器是firefox 。 重要信息 如果您正在使用本机Linux Docker安装请注释machineName的配置行。 如果您使用的是docker机器并且与dev叫不同那么请适应 arquillian.xml中的 machineName也是如此。 下一步是在根目录下创建docker-compose文件。 helloworld:image: lordofthejars/helloworldgoports:- 8080:80 简单的撰写文件仅定义一个容器。 该容器公开了80端口但随后绑定到8080端口。此容器启动Go程序侦听根上下文并返回 HTML格式的Hello World 。 最后是测试 package org.lordofthejars.cubedrone;import org.arquillian.cube.CubeIp; import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; import org.junit.Test; import org.junit.runner.RunWith; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver;import java.net.MalformedURLException; import java.net.URL;import static org.assertj.core.api.Assertions.assertThat;RunWith(Arquillian.class) public class HelloWorldTest {public static final int EXPOSED_PORT 80;// Enrich with webdriver configured to connect to remote browserDroneWebDriver webDriver;// Enrich with helloworld container ipCubeIp(containerName helloworld)String ip;Testpublic void shouldShowHelloWorld() throws MalformedURLException, InterruptedException {// Constructs url that browser should connectURL url new URL(http, ip, EXPOSED_PORT, /);// Typical test using WebDriverwebDriver.get(url.toString());final String message webDriver.findElement(By.tagName(h1)).getText();assertThat(message).isEqualTo(Hello World);}} 此测试中有一些有趣的部分。 从使用Arquillian跑步程序的意义上来说这是标准的Arquillian测试。 使用Arquillian Drone提供的Drone注入机制通过配置为连接到远程浏览器的WebDriver来丰富测试。 使用CubeIp注释使用容器helloworld的内部IP丰富测试。 由于浏览器在Docker主机中运行因此我们可以使用内部IP来实现此目的。 同样重要的是您需要使用裸露的端口而不是绑定端口。 其他所有内容都由Arquillian Cube管理例如Docker容器的启动和停止在本例中为helloworld 但也包含浏览器和VNC客户端的容器。 如果将调试点放入测试方法中然后在终端上执行docker ps 您将看到启动了三个容器而不仅仅是helloworld 。 如果在运行测试后检查了target / reports / videos目录则会找到该测试的录像。 您还可以观看此操作的截屏视频 因此如您所见结合使用Arquillian Cube和Arquillian Drone可以使您的测试和docker -compose文件看起来非常整洁。 测试仅包含与测试相关的内容而与WebDriver配置无关。 同样您的docker-compose看起来也很清晰它仅包含与业务相关的内容与测试无关。 在本文中您已经了解了如何使用Arquillian Cube Arquillian Drone。 在下一个中您将看到与Arquillian Graphene的集成它将把测试简化为仅专注于测试而不是WebDriver调用。 翻译自: https://www.javacodegeeks.com/2016/08/making-web-ui-testing-great-arquillian-docker-selenium-part-1.html
http://www.pierceye.com/news/11303/

相关文章:

  • 彩票网站开发违法电子商务网站建设课程评价
  • 哈尔滨网站制作公司wordprees可以做棋类网站吗
  • 建微网站网站建设合同样本
  • html 网站根目录四川建设银行手机银行下载官方网站
  • 营销型网站是什么意思wordpress 表白
  • 卢氏县住房和城乡规划建设局网站网站建设上传宝贝xamp
  • 个人免费开店的网站查征信怎么查 个人免费查询
  • 定制设计的网站怎样申请免费网站域名
  • 品牌创意网站建设白云区做网站
  • 浙江建设厅官方网站做公众号链接的网站
  • 做箱包外贸哪个网站好都网站建设
  • 中文域名怎样绑定网站网站建设制作设计公司佛山
  • ui设计师与网站编辑有什么关系c#做交易网站
  • wordpress门户网站模板学历提升培训机构
  • 直播网站怎么做国家提供的免费网课平台
  • 云空间的网站wordpress删除版权
  • 企业网站建设的步骤过程中学生制作网站怎么做
  • 网站空间有哪几种类型蓝色门户网站
  • 大酒店网站源代码数字营销1+x
  • 怎么把自己网站推广出去手机网站开发session
  • 长沙微网站建设专门帮做ppt的网站吗
  • 自己做网站投入seo是什么意思广东话
  • 长沙做黄叶和网站的公司有哪些中国有几大建设
  • 黑龙江网站备案地址有创意的网络公司名字
  • 电商是怎么做的百度seo关键词报价
  • 网站如何更换空间传媒网站给行业做宣传
  • 建设公司网站的会计分录邯郸市建设局官方网站
  • 网站的建设背景杭州手机模板建站
  • 效果图制作软件免费下载福建seo排名
  • 做网站的公司跑了网站建设公司的组织架构