【问题标题】:Should selenium tests be kept in separate project硒测试是否应该保存在单独的项目中
【发布时间】:2017-12-28 04:41:49
【问题描述】:

我有一个 Java Web 应用程序 (Maven),我在其中进行了一些 Selenium 测试。测试框架是 Junit 4.x。
我也将 Jenkins 用于 CI。现在我所有的测试(集成+硒)都保存在项目的 src/test 文件夹下。(经典的maven结构)

由于 Jenkins 无法运行 selenium 测试(它未配置为执行此操作 - 我在没有图形界面的 linux 机器上运行,这种情况下的解决方案似乎有点笨拙,但我想运行 selenium 服务器,以便我可以在 windows slave 机器上运行所有这些测试)我必须手动“从执行中删除 selenium 测试”,否则我会有很多失败的测试。

我想要完成的是一个场景:
1.致力于SVN
2.Jenkins 创建一个构建
3.运行测试,如果这里没有问题则进行下一步,否则,停止
4.将应用部署到应用服务器
5. 在 Jenkins 中作为构建后脚本针对该部署运行 selenium 测试。

为了让这个运行,我必须将硒测试提取到其他项目吗? (为了避免 Jenkins 将此测试与其他集成/单元测试一起运行)

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免一次问多个不同的问题。请参阅How to Ask 页面以获得澄清此问题的帮助。
  • 只有一个问题(为了运行它,我必须将硒测试提取到其他项目吗?)。我只是描述了我想使用的场景,以便让每个人都更清楚我在寻找什么......

标签: selenium jenkins


【解决方案1】:

当您使用 Maven 时,您说 kept under the src/test folder of the project 听起来只是 Perfecto

你没有在你的问题中提到为什么Jenkins cannot run selenium tests (it is not configured to do this)。正如您稍后在您的问题中提到的Run the tests,假设您正在使用 TestNG 这只是 Jenkins 执行 pom.xml 的一步配置Maven 将依次调用 *testng.xml,如下所述:

  • 确保您的 Automated Test SuiteTestNG SuiteMaven Test 的身份正确执行。
  • 启动 Jenkins 并浏览到 Manage Jenkins -> Configure System
  • 向下滚动到 JDK -> JDK installations 并确保将 JAVA_HOME 设置为 C:\path\to\jdk1.8.0_144。取消选中 Install automatically
  • 进一步向下滚动到Maven -> Maven installations 并提供NameMAVEN_HOMEMAVEN_HOMEC:\path\to\apache-maven-3.3.3。取消选中 Install automatically
  • 向下滚动到 JDK -> JDK installations 并确保将 Local Maven Repository 设置为 Default(~/.m2/repository)
  • 应用并保存
  • Jenkins Dashboard 上,将 New Item 创建为 Maven project
  • 向下滚动到Build 部分并提供Root POM 作为pom.xml 的绝对路径,例如C:\Users\<user_name>\LearnAutmation\maven.jenkins\pom.xml
  • Goals and options 设置为 clean install
  • 最后一步是将 testng.xml 移动到 \ProjectWorkSpace\src\main\resources\testng.xml 和您的 pom.xml 中,您必须提及位置testng.xml 如下:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<version>2.17</version>
	<configuration>
		<suiteXmlFiles>
			<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
		</suiteXmlFiles>
	</configuration>
</plugin>	
  • 通过 Jenkins 构建您的项目

根据您的具体问题In order to have this running do I have to extract the selenium tests to other project ?,答案是

解决办法:

  • 如果您想同时执行 Suites IntegrationSelenium,这个设置是你的。
  • 如果您想单独执行Suites 中的任何一个,请将IntegrationSelenium 套件划分为不同的TestNG Groups strong> 并ON & OFF TestNG Groups 的执行。

【讨论】:

  • 感谢您的详细回复。我已经更新了我的帖子来回答你的问题。我不明白的是硒测试将如何运行,因为它们必须针对“正在运行”的应用程序运行,所以我需要在运行所有集成测试并且构建项目以部署到应用程序服务器之后的某个地方,并且只有在那之后才能运行硒测试。它是否正确?还是我在这里遗漏了什么?
  • @VideanuAdrian 除了解决方案保持不变的 TestNG/JUnit 之外,我没有发现任何差异。
  • 好的,但我仍然不明白这一点:“我不明白的是硒测试将如何运行,因为它们必须针对“正在运行”的应用程序运行,所以我需要在某个地方之后我运行了所有的集成测试,并且项目被构建以部署到应用服务器,然后才运行 selenium 测试。这是正确的吗?还是我在这里遗漏了什么?"
  • 让项目先构建并部署到应用服务器。然后启动Selenium相关的TestsSelenium 将启动一个浏览器实例并一一执行您的测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
相关资源
最近更新 更多