如何让 Jenkins 在部署时自动运行 Selenium WebDriver/TestNG/Java 测试,Maven 与这一切有啥关系?
Posted
技术标签:
【中文标题】如何让 Jenkins 在部署时自动运行 Selenium WebDriver/TestNG/Java 测试,Maven 与这一切有啥关系?【英文标题】:How to make Jenkins run Selenium WebDriver/TestNG/Java tests automatically on deploy and what has Maven to do with all this?如何让 Jenkins 在部署时自动运行 Selenium WebDriver/TestNG/Java 测试,Maven 与这一切有什么关系? 【发布时间】:2013-07-17 03:54:31 【问题描述】:我已经研究了好几个小时了,但我只找到了大局的一部分。他们到处都假设读者已经设置了系统的一部分。
我认为对将整个事物组合在一起所需的部分进行大图描述会很有用。
他们都说“使用你的 maven selenium 测试”等等。
编辑:经过一番研究,我发现我需要在 Jenkins 和我的计算机上安装 Maven,为 Eclipse 安装一个 Maven 插件,并将我的项目创建/转换为 Maven 项目。 如何在 Jenkins 中转移我的 Maven 项目?我是导出到 .jar,还是移动服务器上的整个文件夹? 如何将整个事物与 xvfb 连接在一起?
这就是我目前所知道的
-
安装 Jenkins(我们的服务器上已经有)
为 Jenkins 安装插件(哪些?)
安装 xvfb 以便在无头浏览器中运行测试(如何在 Java 书面测试中指定?)
在电脑、jenkins 和 eclipse 上安装 Maven,使用 maven 项目。
我应该将来自 Eclipse 工作场所的项目文件夹的哪一部分上传到服务器上?我有一个 testng.xml 文件和一些类(这是实际测试)
如何告诉 Jenkins 在部署后自动运行 Selenium Webdriver 测试,我应该指向哪个文件?
如何获取报告 - 通过 TestNg 或通过一些 Jenkins 功能?
【问题讨论】:
【参考方案1】:响应,在您的列表之后: Q1。安装 Jenkins(我们的服务器上已经有) A1。不需要。
第二季度。为 Jenkins 安装插件(哪些?) A2。据我所知,仅出于此目的不需要特定的插件。 Jenkins 应该能够运行 maven 或 ant 作业,它是开箱即用的。
第三季度。安装 xvfb 以便在无头浏览器中运行测试(如何在 Java 书面测试中指定?) A3。在您的 Java 测试中,您将指定应该启动浏览器的主机(从技术上讲,是运行 selenium 服务器的主机)。它通常是 'localhost',但对于这种情况,它会有所不同(在同一个盒子上运行 jenkins 和 selenium 通常不是一个好主意)。因此,在您的 java 代码中,您使用 xvfb 和 selenium 网格指示该主机(默认情况下侦听端口 4444)。将这些信息从代码(属性文件,以及 pom 文件中的变量,或由 jenkins 提供)中排除也被认为是一种很好的做法。
第四季度。在电脑、jenkins 和 eclipse 上安装 Maven,使用 maven 项目。 A4。 Maven 应该安装在 jenkins 主机上(以及你的本地机器,你用来开发测试的机器)。
Q5。我应该在服务器上上传来自 Eclipse 工作场所的项目文件夹的哪个部分以及在哪里?我有一个 testng.xml 文件和一些类(它们是实际测试) A5。你的代码被置于版本控制之下(对吗?),所以你指向 jenkins 来获取你的项目(然后编译代码,编译测试,运行测试......)。答案是“至少编译和运行测试所需的所有代码”。 Jenkins 构建您的项目从源代码和测试执行只是这个过程的一个阶段。
Q6。如何告诉 Jenkins 在部署后自动运行 Selenium Webdriver 测试,以及我指向哪个文件? A6。使用由surefire插件提供的“集成测试”阶段。
Q7。如何获取报告 - 通过 TestNg 或通过一些 Jenkins 功能? A7。 Jenkins 将显示(并分发,如果以这种方式设置)由 testng 生成的报告。
【讨论】:
感谢您的意见! 2. 如果我在 WebDriver 中使用 testng,我不应该在 Jenkins 中安装 testng 插件吗? 3. 在我的 Java 代码中,我没有指定服务器,也没有指定端口,这里是我指定的: ` ProfilesIni profile = new ProfilesIni(); FirefoxProfile ffprofile = profile.getProfile("SELENIUM"); driver = new FirefoxDriver(ffprofile);` 我应该在这里添加一些关于主机和端口的内容,如果“是” - 究竟是什么? 5.我不知道“版本控制”是什么:(。我的代码放在一个名为“testingMyApp”的工作区文件夹中,所有文件都在那里。它在我的c盘上 6.这个阶段是什么?万能插件是什么? 2.该插件用于绘制测试结果图,不用于实际测试执行,则不是必须的。 3.docs.seleniumhq.org/docs/03_webdriver.jspWebDriver driver = new FirefoxDriver(); driver.get("google.com"); 5. 这很糟糕,你宁愿开始阅读。使用 'git' 和 'subversion' 作为关键字。6. 与 maven-surefire-plugin 相同的建议。快速谷歌搜索返回 176.34.122.30/blog/2008/09/17/… ,看起来像是为surefire+selenium提供了一些好的maven xml。 所以我必须安装surefire插件还是它包含在maven安装中?然后,我使用集成测试阶段作为 POM 中的规范?我如何知道我使用的是哪个版本的 testng,以便在 POM 中正确指定?我是使用 jenkins 将源代码上传到服务器上还是其他位置? 当你在 pom 中声明插件时,maven 会下载插件;与 TestNG 的版本相同:您将 TestNG 指定为依赖项并指定您需要的版本。它将被下载和使用。至于上传,答案是:'在给 Jenkins 设置工作时,注明源代码的位置'。它可以只是一些本地文件夹,因此您可以将源代码上传到 jenkins。仍然是不明智的。你为什么不尝试更小的步骤:首先通过从命令行调用 maven 来编译你的项目,然后让你的测试运行(再次 mvn),然后转到源代码控制,然后转到 jenkins?【参考方案2】:即使我发现了同样的问题,当我开始将我的 WebDriver 项目配置为 Maven 项目并尝试在 jenkins 上进行配置时,我需要通过许多教程并在互联网上发布。所以我想写下我自己的。 让我知道这是否有帮助 http://qtp-help.blogspot.in/2013/09/webdriver-with-maven.html
【讨论】:
【参考方案3】:如果您想在每次部署时告诉 Jenkins 运行您的构建,请在 Jenkins 项目中进行以下设置
通过这种方式,您告诉 Jenkins 每 15 分钟检查一次存储库的更新,如果找到更新,Jenkins 会自动运行构建。您可以根据需要灵活更改时间。
【讨论】:
以上是关于如何让 Jenkins 在部署时自动运行 Selenium WebDriver/TestNG/Java 测试,Maven 与这一切有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章
通过jenkins自动部署war包到tomcat时遇到的一些问题
如何使用 Jenkins 在本地自动部署 Play Framework (2.4) 应用程序?
如何使用 Jenkins 将 Docker 容器从 Amazon ECR 自动部署到 Kubernetes