testing - 如何在 Selenium ui 测试期间交换模拟服务?

标签 testing spring-mvc selenium maven hudson

我们希望将 Selenium 测试引入我们的 Maven 构建过程。令人高兴的是,有大量关于如何执行此操作的信息可用,但我无法弄清楚如何处理我们的其中一项要求。

为了分离我们的测试层,我们希望使用模拟服务对象进行 ui 测试。我们在单元测试中使用的 Spring 配置文件中已经定义了所有这些对象。在单元测试中连接这些服务很容易(我们使用@ContextConfiguration),但是当我们将 war 部署到 Jetty 以进行 Selenium 测试时,我不知道如何处理这种配置交换。

我们正在使用:

  • Spring MVC 3.0
  • 专家
  • hudson

最佳答案

最差:引入特殊的用户/界面参数/复选框/角色。在应用程序中,请记住在代码中的任何地方为这种特殊情况使用模拟。维护很糟糕,容易出错,而且,让我们面对现实吧,非常蹩脚。最常见的你...

最简单解决方案:在您的 Spring 应用程序上下文中开发条件包含:

<import resource="services-${env}.xml"/>

其中 ${env} 来自 pom.xml:

<properties>
    <env>prd</env> <!-- or test depending on build profile -->
</properties>

记得开启资源filtering并使用 build profiles .

在进行 Selenium 测试时。切换可以在 Maven 构建期间或通过其他一些过滤工具完成。这两个文件(services-prd.xmlservices-test.xml)定义了相同的 beans(相同的接口(interface)和/或 id),但当然后者使用模拟实现.

最佳(恕我直言):如果您需要在运行时更改实现,AOP + JMX 会很棒。只需用方面包装您的真实服务,并根据某些标志(可通过 JMX 访问),使用真实服务或模拟。非常干净且无创。

关于testing - 如何在 Selenium ui 测试期间交换模拟服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251454/

相关文章:

python - Selenium Phantomjs 浏览器在启动时挂起。我该如何调试它?

python - 无论如何找不到该元素

javascript - 在 qooxdoo 中测试源应用程序

django - 将固定装置与 pytest : How to share fixtures and use their parameters in different functions 一起使用

django - Linux 上的 UI 测试工具

java - 数据库池 - 在 Spring3 MVC 中连接到 Mysql 数据库

wpf - Web 和 WPF 应用程序的自动化解决方案

带有资源处理程序的spring boot错误页面

spring-mvc - 带有 Spring WebSocket 的 SockJS 客户端 - CORS

python-3.x - 如何点击复选框?甚至 aria-hidden 也是= true?