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

电子商务网站建设需要哪些步骤网站开发维护合同书

电子商务网站建设需要哪些步骤,网站开发维护合同书,阅文集团旗下哪个网站做的最好,手机摄影网站首页maven配置junit5Selenium是一组支持浏览器自动化的工具和库#xff0c;主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver#xff0c;它提供客户端库#xff0c;JSON有线协议#xff08;与浏览器驱动程序进行通信的协议#xff09;和浏览器驱动程序。 Se… maven配置junit5 Selenium是一组支持浏览器自动化的工具和库主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver它提供客户端库JSON有线协议与浏览器驱动程序进行通信的协议和浏览器驱动程序。 Selenium WebDriver的主要优点之一是它受所有主要编程语言的支持并且可以在所有主要操作系统上运行。 在带有Selenium WebDriver的JUnit 5的这一部分–教程中您将了解JUnit 5的其他功能这些功能将通过并行运行测试配置测试顺序和创建参数化测试来帮助您减少测试的执行时间。 您还将学习如何利用Selenium Jupiter功能例如通过系统属性进行测试执行配置单个浏览器会话测试以加快测试执行速度或捕获测试中的屏幕截图。 最后您将学习如何将AssertJ库添加到您的项目。 关于本教程 您正在阅读带有Selenium WebDriver的JUnit 5的第三部分-教程 。 本教程中的所有文章 第1部分– 从头开始设置项目–使用JUnit 5和Jupiter Selenium进行Gradle 第2部分– 使用Selenium内置的PageFactory实现Page Object Pattern 第3部分– 改进项目配置–并行执行测试测试执行顺序参数化测试AssertJ等 本教程的源代码可以在Github上找到 使用JUnit 5并行测试执行 JUnit 5带有内置的并行测试执行支持。 以下命令将并行运行TodoMvcTests的测试方法 ./gradlew clean test --tests *TodoMvcTests -Djunit.jupiter.execution.parallel.enabled true -Djunit.jupiter.execution.parallel.mode. default concurrent 构建成功在执行过程中您应该注意到两个Chrome浏览器实例正在运行。 在此运行中所有测试的执行时间减少到10秒 Task :test pl.codeleak.demos.selenium.todomvc.TodoMvcTests createsTodo() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests createsTodosWithSameName() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests togglesAllTodosCompleted() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests togglesTodoCompleted() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests clearsCompletedTodos() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests editsTodo() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests removesTodo() PASSED BUILD SUCCESSFUL in 10s 4 actionable tasks: 4 executed 提示有关更多选项请查阅文档 https : //junit.org/junit5/docs/current/user-guide/#writing-tests-parallel-execution 使用JUnit 5测试执行顺序 自动化测试应能够独立运行且无特定顺序并且测试结果不应依赖于先前测试的结果。 但是在某些情况下可以证明测试执行的特定顺序。 默认情况下在JUnit 5中测试方法的执行在构建之间是可重复的因此具有确定性但是该算法是故意不明显的作为库状态的作者。 幸运的是可以使用内置方法定购器或通过创建自定义定购器来调整执行顺序以满足我们的需求。 我们将使用Order批注提供测试方法的排序并使用TestMethodOrder注释类以指示JUnit 5方法已排序。 ExtendWith (SeleniumExtension. class ) SingleSession TestMethodOrder (MethodOrderer.OrderAnnotation. class ) DisplayName ( Managing Todos DisplayName Managing Todos ) class TodoMvcTests { Test Order ( 1 ) DisplayName ( Creates Todo with given name ) void createsTodo() { } Test Order ( 2 ) DisplayName ( Creates Todos all with the same name DisplayName Creates Todos all with the same name ) void createsTodosWithSameName() { } // rest of the methods omitted for readability } 在本文中阅读有关JUnit 5中测试执行顺序的更多信息 https : //blog.codeleak.pl/2019/03/test-execution-order-in-junit-5.html Selenium Jupiter的单个浏览器会话 您可能已经注意到对于TodoMvcTests类中的每个测试 TodoMvcTests启动一个新的Chrome浏览器实例并在每个测试之后将其关闭。 此行为导致整个套件的执行花费了相当多的时间上一次执行需要27秒。 Selenium Jupiter附带了一个方便的类级别注释可以更改此行为。 SingleSession批注会更改行为以便在所有测试之前初始化浏览器实例一次并在所有测试之后关闭浏览器实例。 要应用SingleSession我们需要稍微修改测试类并将驱动程序对象注入到构造函数中而不是注入到BeforeEach方法中。 我们还需要注意每次测试的正确状态。 这可以通过清除AfterEach方法中AfterEach存储的本地存储来完成。 我还创建了一个字段driver 该字段driver保留了所有测试中使用的驱动程序对象实例。 我使用注入到BeforeEach和AfterEach方法中的驱动程序测试了SingleSession 但似乎这没有按预期方式工作并且每次执行新测试时都会创建一个新的驱动程序实例。 我相信这是库的另一个设计缺陷。 private final ChromeDriver driver; public TodoMvcTests(ChromeDriver driver) { this .driver driver; this .todoMvc PageFactory.initElements(driver, TodoMvcPage. class ); this .todoMvc.navigateTo(); } AfterEach void storageCleanup() { driver.getLocalStorage().clear(); } 当我们执行测试时我们可以观察到执行所有测试的时间大大减少了 ./gradlew clean test Task :test pl.codeleak.demos.selenium.todomvc.TodoMvcTests editsTodo() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests togglesTodoCompleted() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests createsTodo() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests removesTodo() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests togglesAllTodosCompleted() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests createsTodosWithSameName() PASSED pl.codeleak.demos.selenium.todomvc.TodoMvcTests clearsCompletedTodos() PASSED pl.codeleak.demos.selenium.todomvc.SeleniumTest projectIsConfigured(ChromeDriver) PASSED BUILD SUCCESSFUL in 9s 3 actionable tasks: 3 executed 提示如果您希望从选定的类中运行测试则可以使用Gradle测试任务随附的测试过滤。 例如此命令将仅运行TodoMvcTests类中的测试 ./gradlew clean test --tests *.todomvc.TodoMvcTests 并行执行单个浏览器会话测试 请注意如果您现在尝试使用JUnit 5并行性并行执行测试则测试将失败。 在并行执行中每个方法都需要单独的驱动程序实例并启用SingleSession我们为所有测试共享一个实例。 为了解决这个问题我们需要运行测试配置并行执行以便顶级类并行运行但方法在同一线程中。 只需复制TodoMvcTests类然后尝试以下命令 ./gradlew clean test --tests *TodoMvcTests -Djunit.jupiter.execution.parallel.enabled true -Djunit.jupiter.execution.parallel.mode. default same_thread -Djunit.jupiter.execution.parallel.mode.classes. default concurrent 在执行过程中您应该看到3个浏览器正在运行并在终端中输出类似于以下内容 -- 87 % EXECUTING [3s] :test 0 tests completed :test Executing test pl.codeleak.demos.selenium.todomvc.MoreTodoMvcTests :test Executing test pl.codeleak.demos.selenium.todomvc.EvenMoreTodoMvcTests :test Executing test pl.codeleak.demos.selenium.todomvc.TodoMvcTests Selenium Jupiter的通用驱动程序配置 在当前测试中我们将ChromeDriver直接注入到测试类中。 但是在某些情况下我们希望对注入的驱动程序有更多的控制而我们宁愿注入WebDriver接口并稍后决定应该注入哪个驱动程序实例。 我们还需要更改storageCleanup()方法因为通用WebDriver不提供直接的localStorage访问 public TodoMvcTests(WebDriver driver) { this .driver driver; this .todoMvc PageFactory.initElements(driver, TodoMvcPage. class ); this .todoMvc.navigateTo(); } AfterEach void storageCleanup() { ((JavascriptExecutor) driver).executeScript( window.localStorage.clear() ); } 现在要在运行时更改浏览器类型我们需要调整sel.jup.default.browser config属性。 配置JUnit 5和Selenium Jupiter的常见方法之一是通过Java系统属性。 可以使用属性文件以编程方式完成此操作也可以使用-D开关将属性直接传递给JVM。 为了确保在执行Gradle时传递给JVM的属性在测试中可用我们需要修改build.gradle 如下所示 test { // Make system properties available in tests systemProperties System.getProperties() useJUnitPlatform() testLogging { events passed , skipped , failed } } 到目前为止当您运行./gradlew clean test -Dpropvalue类的命令时该属性prop将在测试中可用。 通过上述更改我们可以选择浏览器类型来运行测试 ./gradlew clean test --tests *TodoMvcTests -Dsel.jup. default .browserfirefox 使用Selenium Jupiter保存屏幕截图 Selenium Jupiter允许在测试结束时保存屏幕截图-始终或仅在失败时保存。 您还可以自定义输出目录和格式。 ./gradlew clean test --tests *TodoMvcTests -Dsel.jup. default .browserfirefox -Dsel.jup.screenshot.at.the.end.of.tests true -Dsel.jup.screenshot.formatpng -Dsel.jup.output.folder/tmp 提示有关更多选项请查阅文档 https : //bonigarcia.github.io/selenium-jupiter/#screenshots 使用JUnit 5进行参数化测试 参数化单元测试的总体思路是对不同的测试数据运行相同的测试方法。 要在JUnit 5中创建参数化测试请使用ParameterizedTest注释测试方法并提供该测试方法的参数源。 有几种可用的参数来源包括 ValueSource –提供对文字值数组即短裤整数字符串等的访问。 MethodSource –提供对从工厂方法返回的值的访问 CsvSource –从一个或多个提供的CSV行中读取逗号分隔值CSV CsvFileSource –用于加载逗号分隔值CSV文件 在下一个示例中我们将使用存储在src/test/resources目录中的以下CSV todo;done Buy the milk; false Clean up the room; true Read the book; false 为了在测试中使用上述CSV文件我们需要使用ParameterizedTest注释而不是Test 对测试进行注释然后使用CsvFileSource注释指向该文件 ParameterizedTest CsvFileSource (resources /todos.csv , numLinesToSkip 1 , delimiter ; ) DisplayName ( Creates Todo with given name ) void createsTodo(String todo) { todoMvc.createTodo(todo); assertSingleTodoShown(todo); } CSV文件中的每个记录都有两个字段 name和done 。 在上述测试中仅使用待办事项的名称。 但是我们当然可以使测试复杂一点并同时使用这两个属性 ParameterizedTest (name {index} - {0}, done {1} ) CsvFileSource (resources /todos.csv , numLinesToSkip 1 , delimiter ; ) DisplayName ( Creates and optionally removes Todo with given name ) void createsAndRemovesTodo(String todo, done) { boolean done) { todoMvc.createTodo(todo); assertSingleTodoShown(todo); todoMvc.showActive(); assertSingleTodoShown(todo); if (done) { todoMvc.completeTodo(todo); assertNoTodoShown(todo); todoMvc.showCompleted(); assertSingleTodoShown(todo); } todoMvc.removeTodo(todo); assertNoTodoShown(todo); } 请注意同一测试类别/ 了解更多关于这篇文章中参数的测试 https://blog.codeleak.pl/2017/06/cleaner-parameterized-tests-with-junit-5.html也经历了JUnit 5文档 https//开头的JUnit .org / junit5 / docs / current / user-guide /writing-tests-parameterized-tests 使用AssertJ更好的断言 JUnit 5具有许多内置的断言但是当真正的工作开始时您可能需要的远远超出了JUnit 5所能提供的。 在这种情况下我建议使用AssertJ库。 AssertJ AssertJ是一个Java库提供了丰富的断言集真正有用的错误消息提高了测试代码的可读性并且设计为在您喜欢的IDE中非常容易使用。 AssertJ的一些功能 对许多Java类型的流利断言包括日期集合文件等。 SoftAssertions类似于JUnit 5的assertAll 复杂领域比较 可以轻松扩展–自定义条件和自定义断言 要在项目中使用AssertJ我们需要向build.gradle添加一个依赖build.gradle testCompile( org.assertj:assertj-core:3.13.2 ) 首先我们需要静态导入org.assertj.core.api.Assertions.*并使用带有assertThat方法的代码完成 assertThat(objectUnderTest). 例如您将编写assertThat(todoMvc.getTodosLeft()).isEqualTo(3); 使用AssertJ而不是assertEquals(3, todoMvc.getTodosLeft()); 在普通的JUnit 5或assertThat(todoMvc.todoExists(readTheBook)).isTrue()而不是assertTrue(todoMvc.todoExists(readTheBook)) 。 使用复杂类型甚至更好 todoMvc.createTodos(buyTheMilk, cleanupTheRoom, readTheBook); assertThat(todoMvc.getTodos()) .hasSize( 3 ) .containsSequence(buyTheMilk, cleanupTheRoom, readTheBook); 请访问官方文档以了解有关AssertJ的更多信息 https ://assertj.github.io/doc/ 提示阅读有关将AssertJ与JUnit 5集成的更多信息 https ://blog.codeleak.pl/2017/11/junit-5-meets-assertj.html 摘要 在本文中我介绍了如何利用JUnit 5的内置功能来提高项目配置的速度但不仅限于速度。 您还了解了如何利用某些Selenium Jupiter功能来改进项目。 看起来可能已经很多了JUnit 5和Selenium Jupiter都提供了更多功能。 查看两个项目文档并找出对当前或将来的项目有用的其他内容 https://bonigarcia.github.io/selenium-jupiter/ https://junit.org/junit5/ 翻译自: https://www.javacodegeeks.com/2019/12/junit-5-and-selenium-improving-project-configuration.htmlmaven配置junit5
http://www.zqtcl.cn/news/953249/

相关文章:

  • 顺德网站设计成都网站优化方式
  • 宁波建网站哪家好用点网站后台 更新缓存
  • 如何推广网站链接做旅游网站的目的
  • 网站规划与设计课程设计中企动力网站建设 长春
  • 最新网站建设哪家公司好wordpress 顶部图片
  • 有什么网站可以做一起作业公司简介优秀文案
  • 太仓住房和城乡建设局网站seo网页推广
  • 网络公司 网站源码网页源代码修改了影响别人吗
  • 网站后台是怎样制作的app开发公司排行榜做软件的公司
  • 有专门做网站的公司吗西安分类信息seo公司
  • 重庆璧山网站制作公司哪家专业商城网站建设 优帮云
  • 双语网站建设费用安徽省芜湖建设定额网站
  • 常州市城乡建设局网站wordpress 阿里云cdn
  • 福州制作网站设计哪里比较好百度网址大全官方网站
  • 一般做美食网站的产品需求我想做个网站
  • 成品网站制作公司应用公园是免费的吗
  • 做毕业网站的流程网站建设价格一览表
  • 企业服务网站开发做网站怎样建立服务器
  • 电子商务他们的代表网站360免费wifi官网
  • 网站后端开发软件cc域名做门户网站
  • 保定设计网站超云建站
  • 建筑工程网官网入口优化网站关键词排名软件
  • 企业网站功能怎么设计wordpress文章图片轮播
  • 网站后台登陆验证码不对阳江房产网楼市数据
  • 营销型网站建设遨龙仙居住房和城乡建设规划局网站
  • 中国做视频网站有哪些淘宝做详情页代码网站
  • 网站开发一般多钱在网站设计公司上班好吗
  • 餐饮连锁企业网站建设方案北京软件研发公司
  • 外国网站架构新闻稿
  • 营销网站建设企划案例友情链接怎么添加