【问题标题】:Creating an executable jar of selenium test from a maven project从 Maven 项目创建一个可执行的硒测试 jar
【发布时间】:2012-02-29 17:15:17
【问题描述】:

我有几个硒测试作为我的项目(项目 X)的一部分。我希望能够创建一个可执行的 jar 来运行测试,比如针对生产环境而不是本地或 CI 构建的一部分。这些将定期运行,以确保应用程序的当前实时行为与发布点的行为相匹配。例如,它会调用多个单独部署的 webapp,并且它们的输出可能会在项目 X 的​​更新发布之前发生变化。

理想情况下,我想使用像程序集插件这样的东西来创建它作为构建的一部分,但我愿意接受其他建议。目前我唯一能想到的就是在某台机器上签出项目并根据需要执行构建。

【问题讨论】:

  • 我对此没有一个好的答案,现在我正在使用一个被破解的 groovy 脚本,它将测试和必要的依赖项打包到一个带有可执行类的 jar 中,该类简单地调用生成的jar 中包含的 Ant 脚本。此 Ant 脚本执行测试并将输出保存到目录
  • 我也在调查这个。当你说我有几个硒测试作为我的项目的一部分时,你的意思是正确的 Maven 测试吗?我想在那种情况下,将它们打包在正常的构建中不会是一种选择,因为测试将由 Maven 本身运行(但我可能错了,我是 Maven 初学者)。无论如何,您是否尝试通过故障安全插件运行测试?然后以某种方式解析报表 XML?
  • 只需两分钟的搜索:您是否尝试过Maven Embedder 和/或Maven Invoker?也许他们可以以某种方式在这里提供帮助。我认为要做你想做的事情,Maven 必须是包含你的测试的项目的依赖项,或者类似的东西。

标签: testing maven selenium automated-tests executable


【解决方案1】:

从不喜欢使用单元测试框架来运行 selenium(因为它们不是单元测试),因此倾向于使用自定义框架来输出结果和定义配置等。

假设您的 selenium 测试结构良好,应该很容易将它们剥离到一个新项目中并封装一个框架来控制所有内容并输出结果。

如果将其用作 CI 的一部分,您也可以仅作为下游可执行文件运行,这将为您提供更准确的生命周期 - 构建、单元测试、集成测试、部署、端到端测试/UI 测试。

以上的组合应该让您可以灵活地作为 CI 的一部分运行,也可以针对不同的部署系统进行临时运行。

【讨论】:

  • 嗯...这实际上是问题的答案吗?
  • @AndrewBarber 好的,我的第一个答案,让我休息一下 :) 我认为它确实回答了这个问题,并提供了一些关于不将 selenium 作为单元测试运行并创建测试项目(即可执行 jar selenium 测试),但使用自定义框架替换 junit(或其他)
  • 我只是想知道;对我来说这不是问题的答案并不明显,所以我问:)
  • 谢谢,但这确实不能回答问题。我想重用现有的测试。作为多模块构建的一部分,它们已经位于主项目的单独模块中。当surefire+junit运行良好时,我认为编写自定义框架来执行测试并没有任何真正的好处。
  • 还不错。我相信这是总体上最好的方法,您确实说过您愿意接受其他建议!
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2017-03-20
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2019-07-17
  • 2019-05-22
相关资源
最近更新 更多