这篇文章描述了如何在Java中实现Selenium测试。 它的灵感来自Alex Collins的帖子,并带有注释。 该代码可在GitHub的Spring-Selenium-Test目录中找到。 一些替代方法和更轻巧的技术可用于对Spring MVC应用程序进行单元测试。 要进行单元测试服务,请参见此处 。

页面,配置和控制器

我们使用“ Hello World”创建一个简单页面:

<!doctype html>
<html lang='en'>
<head><meta charset='utf-8'><title>Welcome !!!</title>
</head>
<body><h1>Hello World !</h1>
</body>
</html>

我们使控制器非常简单:

@EnableWebMvc
@Configuration
@ComponentScan(basePackages = 'com.jverstry')
public class WebConfig extends WebMvcConfigurerAdapter {@Beanpublic ViewResolver getViewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix('WEB-INF/pages/');resolver.setSuffix('.jsp');return resolver;}}

还有我们的控制器:

@Controller
public class MyController {@RequestMapping(value = '/')public String home() {return 'index';}}

用于硒测试

我们创建一个测试配置。 它提供了在本地打开应用程序的URL。 该应用程序是使用Firefox打开的:

@Configuration
public class TestConfig {@Beanpublic URI getSiteBase() throws URISyntaxException {return new URI('http://localhost:10001/spring-selenium-test-1.0.0');}@Bean(destroyMethod='quit')public FirefoxDriver getDrv() {return new FirefoxDriver();}}

我们还定义了一个抽象类作为所有测试的基础。 测试后,它将自动关闭Firefox:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={ TestConfig.class })
public abstract class AbstractTestIT {@Autowiredprotected URI siteBase;@Autowiredprotected WebDriver drv;{Runtime.getRuntime().addShutdownHook(new Thread() {@Overridepublic void run() {drv.close();}});}}

然后我们执行硒测试,以确保我们的页面包含“ Hello World”:

public class SeleniumTestIT extends AbstractTestIT {@Testpublic void testWeSeeHelloWorld() {drv.get(siteBase.toString());assertTrue(drv.getPageSource().contains('Hello World'));}}

Maven依赖项与Alex Collins帖子中描述的依赖项相同。

构建应用程序

如果您构建了该应用程序,它将自动打开和关闭firefox。 测试将成功。

参考: 技术说明博客上的JCG合作伙伴 Jerome Versrynge提供的带注释的Spring硒测试 。

翻译自: https://www.javacodegeeks.com/2013/01/spring-selenium-tests-with-annotations.html

带有批注的Spring硒测试相关推荐

  1. 在Spring Boot测试中使用Testcontainer进行数据库集成测试

    在此博客文章中,我想演示如何在Spring Boot测试中集成Testcontainer以便与数据库一起运行集成测试. 我没有使用Testcontainers的Spring Boot模块. 如何与他们 ...

  2. spring boot测试_测试Spring Boot有条件的合理方式

    spring boot测试 如果您或多或少有经验的Spring Boot用户,那么很幸运,在某些时候您可能需要遇到必须有条件地注入特定bean或配置的情况 . 它的机制是很好理解的 ,但有时这样的测试 ...

  3. swagger api文档_带有Swagger的Spring Rest API –创建文档

    swagger api文档 使REST API易于使用的真正关键是好的文档. 但是,即使您的文档做得很好,您也需要设置公司流程的权利以正确,及时地发布它. 确保利益相关者按时收到是一回事,但是您也要负 ...

  4. 使用Testcontainers和PostgreSQL,MySQL或MariaDB的Spring Boot测试

    Testcontainers是一个Java库,可轻松将Docker容器集成到JUnit测试中. 在Containerized World中 ,将测试配置与嵌入式数据库和服务复杂化几乎没有意义. 而是使 ...

  5. 硒测试中所需的功能和示例

    所需功能是用于声明一组基本要求(例如浏览器,操作系统,浏览器版本等的组合)的类,以对Web应用程序执行自动跨浏览器测试. 当我们尝试通过Selenium自动化测试来自动化测试脚本时,我们需要考虑这些组 ...

  6. 使用JUnit 5进行Spring Boot测试

    JUnit 5 (JUnit Jupiter)已经存在了相当长的一段时间,并且配备了许多功能. 但令人意外JUnit 5它不是一个默认的测试库相关,当涉及到春节开机测试入门:它仍然是JUnit 4.1 ...

  7. 带有Swagger的Spring Rest API –创建文档

    使REST API易于使用的真正关键是好的文档. 但是,即使您的文档做得不错,您也需要设置公司流程的权利,以正确,及时地发布它. 确保利益相关者按时收到是一回事,但是您也要负责API和文档中的更新. ...

  8. Spring MVC测试框架入门–第1部分

    最新推出的主要Spring框架是Spring MVC测试框架,Spring Guys声称它是"一流的JUnit支持,可通过流畅的API测试客户端和服务器端Spring MVC代码" ...

  9. Spring MVC测试框架入门–第2部分

    这个迷你系列的第一个博客介绍了Spring MVC测试框架,并展示了其在单元测试Spring MVC Controller类中作为控制器而不是POJO进行单元测试的用途. 现在是时候讨论使用框架进行集 ...

最新文章

  1. Go各时间字符串使用详解
  2. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第1章-绪论
  3. source环境变量命令千万不能乱用
  4. android图片选择器框架支持长图,基于RxJava的Android图片选择器. – RxPicker
  5. ajax实现浏览器前进后退-location.hash与模拟iframe
  6. 信息学奥赛一本通 1167:再求f(x,n)
  7. Type class-Typeclass-泛型基础上的二次抽象
  8. 对象可以在栈上分配空间吗?_Java面试题之:Java中所有的对象都分配在堆中吗?...
  9. wireshark 抓包分析 TCPIP协议的握手
  10. 中文信息处理(六)—— 神经语言模型与词表示(word2vec)
  11. 阿里平头哥“生娃”!最强 RISC-V 处理器玄铁 910 诞生!
  12. 面试题 17.09. 第 k 个数
  13. Java 反编译工具哪家强?对比分析瞧一瞧
  14. 宝德银河麒麟系统打印机安装及共享方法(一)
  15. adjoint-io bulletpoofs 性能测试结果
  16. uni-app 选择图片上传到服务器、云储存
  17. MongoDB的授权和权限
  18. 李飞飞CS231n课程-中文笔记(包括课后作业要求)翻译汇总
  19. git 拉取其他分支代码
  20. 利用正则截取匹配的字符串前后内容同

热门文章

  1. php制作留言板的题_PHP实现留言板功能实例代码
  2. date转timestamp格式_技术分享 | MySQL:timestamp 时区转换导致 CPU %sys 高的问题
  3. 把本地库推送到github远程库
  4. lombok_Lombok–您绝对应该尝试一下
  5. javafx窗体程序_JavaFX实际应用程序:SkedPal
  6. javafx窗体程序_JavaFX真实世界应用程序:EIZO CuratOR Caliop
  7. junit规则_jUnit:规则
  8. 带有HttpClient的自定义HTTP标头
  9. java六大原则_六大Java功能
  10. 在Java中使用Google的协议缓冲区