如何在 Jenkins 上为 Maven/Java 项目实施 selenium 测试?

How to implement selenium tests on Jenkins for Maven/Java project?

朋友。我试图了解硒是如何工作的。我用 JUnit 4 编写了一些测试。当我的应用程序是 运行 并且我将 URL localhost:8077 放在我的应用程序启动位置时,这些测试工作正常。所有测试都按我的需要通过。但现在我希望我的 war 构建将取决于这些测试。在这些之后,我希望自动发布 (Jenkins) 也将取决于 selenium 测试。 有些事情我不明白:

  1. selenium 测试应该包含在我的应用程序中,还是应该组装在一个独立的应用程序中? (我阅读了有关 Selenium Grid 的信息,但我不确定我是否需要它)?
  2. 我有一台开发机器,一台装有 jenkins 的服务器和一台生产服务器。实施 Selenium 测试需要哪些步骤?测试中应该使用什么Url?是否需要和Jenkins在同一台服务器上安装Tomcat服务器?
  3. 如果 selenium 测试未通过,我可以使构建无效并在 Jenkins 上删除发布吗?

我会尽力回答您的问题,并希望为您解决一些问题。

  1. 根据我的经验,每个测试都应创建为一个新项目,然后在您的应用程序部署后或定期配置为 运行。不,您不需要 Selenium Grid。它用于并行执行测试。

  2. 您需要将机器配置为 jenkins 上的节点,并在从机上安装 jenkins 代理。设置 selenium 测试会有所不同,具体取决于您编写测试的方式,例如,我使用 maven 作为我的构建工具。因此,对于每个新测试,我只需要指向 svn 并给出 maven 启动命令。 url 是您用来访问您的应用程序的任何 url。在他们的网站上有一篇关于如何设置 jenkins 的非常好的文章,你可以找到它 here

  3. 是。

Should the selenium test be included in my application or they should be assembled in a standalone application? (I read about Selenium Grid but I am not sure that I need it)?

这取决于您想如何 运行 您的测试。最佳实践是在您的 Maven 项目中调用测试配置,测试将在您的构建作业期间 运行。您也可以在构建完成后调用您的 maven 目标。

Selenium Grid 很有用,但前提是您的专用机器已正确设置 运行 这些测试,否则您的测试可能经常失败。您应该考虑 运行使用 Saucelabs 等服务在云端远程测试您的测试

I have one developer machine, one server with jenkins and the production server. What are the needed steps to implement Selenium test? What Url should be used in test? Is it needed to install Tomcat Server on the same server with Jenkins?

Selenium 测试可以按照 here, here and .

中的步骤在 Jenkins 上使用 Maven 实现

开发或测试 URL 应该用于 运行测试。

如果您在 Jenkins 机器上托管您的应用程序,我认为您需要 Tomcat 服务器,否则不需要它。

Can I invalidate the build and drop the release on Jenkins if selenium tests are not passed?

当您在项目配置中包含测试配置时,如果您的测试失败,则构建可能会在构建作业期间失败。您可以设置在测试失败时如何继续构建,例如构建失败或通过警告构建。您可能还想收到构建失败的通知。

例如。 Jenkins marks good build as failure because of test failed

Jenkinsplugins可以根据需要使用

You may like to read more about How to do Integration tests here.