Selenium Phpunit和Jenkins
我有一个使用Selenium用PHPUnit编写的PHP项目 本项目结构如下: PHPProjectName 源文件 不包含任何内容 Selenium测试文件 包含我的所有selenium测试php文件-扩展类PHPUnit_Extensions_SeleniumTestCase 包含路径 c:\ProgramFiles\PHP c:\ProgramFiles\PHP\PEAR\PHPUnit 然后,通过运行java-jar Selenium-server-standalone-2.24.1.jar手动启动Selenium服务器 执行所有selenium测试php文件的php脚本工作正常 但是现在我想使用Jenkins作为一个测试管理工具来构建和执行这个文件夹中的PHPunit测试。我想步骤是: 安装詹金斯 为PHPunit测试编写一个构建脚本 通过Jenkins执行构建脚本 步骤正确吗?有人做过或知道如何设置吗Selenium Phpunit和Jenkins,selenium,jenkins,phpunit,Selenium,Jenkins,Phpunit,我有一个使用Selenium用PHPUnit编写的PHP项目 本项目结构如下: PHPProjectName 源文件 不包含任何内容 Selenium测试文件 包含我的所有selenium测试php文件-扩展类PHPUnit_Extensions_SeleniumTestCase 包含路径 c:\ProgramFiles\PHP c:\ProgramFiles\PHP\PEAR\PHPUnit 然后,通过运行java-jar Selenium-server-standalone-2.24.1.j
非常感谢,我已经在各种平台上多次这样做了。您的步骤通常是正确的,应该可以工作,但是管理服务器并不总是那么简单。Selenium RC服务器如果长时间处于打开状态会变得不稳定,因此您必须以某种方式对其进行管理 您可以设置第二个Jenkins作业,每天运行一到两次以重置服务器。但是,更好的选择是编写一个简单的测试框架,关闭所有打开的服务器,然后在运行测试之前启动一个新的服务器实例。当然,您也可以使用cron作业来重置服务器,但是如果您安装了Jenkins,那么通过Jenkins作业来重置服务器会更容易
当然,最好的选择是切换到Webdriver,但这可能需要一些工作,具体取决于您的测试有多复杂。我已经在各种平台上多次这样做了。您的步骤通常是正确的,应该可以工作,但是管理服务器并不总是那么简单。Selenium RC服务器如果长时间处于打开状态会变得不稳定,因此您必须以某种方式对其进行管理 您可以设置第二个Jenkins作业,每天运行一到两次以重置服务器。但是,更好的选择是编写一个简单的测试框架,关闭所有打开的服务器,然后在运行测试之前启动一个新的服务器实例。当然,您也可以使用cron作业来重置服务器,但是如果您安装了Jenkins,那么通过Jenkins作业来重置服务器会更容易
当然,最好的选择是切换到Webdriver,但这可能需要一些工作,具体取决于您的测试有多复杂。我们的设置与您描述的类似。我们让Jenkins定期运行一个作业来重新启动Selenium服务器:
#!/bin/bash
# startselenium.sh: Start Selenium up and also start headless screen.
Xvfb :99 -ac &
export DISPLAY=:99
java -jar /opt/selenium/selenium-server-standalone-2.19.0.jar &
Sebastian Bergmann在这里维护了一系列将Jenkins与PHP结合使用的模板:
包括运行PHPUnit所需的Ant脚本,该脚本非常简单,只需调用PHPUnit:
<target name="phpunit" description="Run unit tests with PHPUnit">
<exec executable="phpunit" failonerror="true"/>
</target>
以及必要的“phpunit.xml”文件:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="tests/bootstrap.php"
backupGlobals="false"
backupStaticAttributes="false"
strict="true"
verbose="true">
<testsuites>
<testsuite name="ProjectName">
<directory suffix="Test.php">tests/unit/</directory>
<directory suffix="Test.php">tests/integration/</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-html" target="build/coverage" title="BankAccount"
charset="UTF-8" yui="true" highlight="true"
lowUpperBound="35" highLowerBound="70"/>
<log type="coverage-clover" target="build/logs/clover.xml"/>
<log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false"/>
</logging>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src</directory>
<exclude>
<file>src/bootstrap.php</file>
</exclude>
</whitelist>
</filter>
</phpunit>
我们的设置与您描述的类似。我们让Jenkins定期运行一个作业来重新启动Selenium服务器:
#!/bin/bash
# startselenium.sh: Start Selenium up and also start headless screen.
Xvfb :99 -ac &
export DISPLAY=:99
java -jar /opt/selenium/selenium-server-standalone-2.19.0.jar &
Sebastian Bergmann在这里维护了一系列将Jenkins与PHP结合使用的模板:
包括运行PHPUnit所需的Ant脚本,该脚本非常简单,只需调用PHPUnit:
<target name="phpunit" description="Run unit tests with PHPUnit">
<exec executable="phpunit" failonerror="true"/>
</target>
以及必要的“phpunit.xml”文件:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="tests/bootstrap.php"
backupGlobals="false"
backupStaticAttributes="false"
strict="true"
verbose="true">
<testsuites>
<testsuite name="ProjectName">
<directory suffix="Test.php">tests/unit/</directory>
<directory suffix="Test.php">tests/integration/</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-html" target="build/coverage" title="BankAccount"
charset="UTF-8" yui="true" highlight="true"
lowUpperBound="35" highLowerBound="70"/>
<log type="coverage-clover" target="build/logs/clover.xml"/>
<log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false"/>
</logging>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src</directory>
<exclude>
<file>src/bootstrap.php</file>
</exclude>
</whitelist>
</filter>
</phpunit>
您必须在jenkins中安装selenium插件,然后一个selenium服务器将自动在jenkins上启动,这将创建一个集线器。现在,在客户端上,您必须启动一个连接到此集线器的节点 注意:jenkins selenium服务器始终与jenkins的selenium插件版本相同。因此,如果selenium插件的名称是 selenium插件3.1.0然后在selenium服务器3.1.0上运行 安装jenkins selenium插件后,您可以找到selenium grid的新选项,单击它,您将获得更多信息: 现在,您必须像这样启动jenkins selenium独立服务器: Windows使用以下内容创建一个.bat文件并执行它,相应地更改相关部分:
start java -jar -Dwebdriver.gecko.driver="C:\Webdrivers\GeckoDriver\geckodriver.exe" -Dwebdriver.chrome.driver="C:\Webdrivers\ChromeDriver\chromedriver.exe" selenium-server-standalone-<VERSION>.jar -role node -hub http://<YOUR_JENKINS_MACHINE_IP>:<PORT>/grid/register
确保将geckodriver和chromedriver的路径更正到其实际位置
现在节点应该连接到集线器,您可以开始测试了
更多资讯:
您必须在jenkins中安装selenium插件,然后在jenkins上自动启动selenium服务器,这将创建一个集线器。现在,在客户端上,您必须启动一个连接到此集线器的节点 注意:jenkins selenium服务器始终与jenkins的selenium插件版本相同。因此,如果selenium插件的名称是 selenium插件3.1.0然后在selenium服务器3.1.0上运行 安装jenkins selenium插件后,您可以找到selenium grid的新选项,单击它,您将获得更多信息: 现在,您必须像这样启动jenkins selenium独立服务器: Windows使用以下内容创建一个.bat文件并执行它,相应地更改相关部分:
start java -jar -Dwebdriver.gecko.driver="C:\Webdrivers\GeckoDriver\geckodriver.exe" -Dwebdriver.chrome.driver="C:\Webdrivers\ChromeDriver\chromedriver.exe" selenium-server-standalone-<VERSION>.jar -role node -hub http://<YOUR_JENKINS_MACHINE_IP>:<PORT>/grid/register
确保纠正通往geckodriver和chro的路径
medriver到他们的实际位置
现在节点应该连接到集线器,您可以开始测试了
更多资讯:
感谢大家对Selenium RC服务器不稳定的批评。您是否有运行PHPunit脚本的ANT构建脚本,我尝试使用这里的脚本,但运气不好……该链接上的示例看起来是正确的,但我以前从未使用过ANT+PHPunit,所以我没有任何脚本可以共享。您的问题是什么?感谢您对Selenium RC服务器不稳定的提醒。您是否有运行PHPunit脚本的ANT构建脚本,我尝试使用这里的一个,但运气不太好……该链接上的示例看起来正确,但我以前从未使用过ANT+PHPunit,所以我没有任何脚本可以共享。你有什么问题?