2012-07-20 110 views
2

我有一个使用Selenium编写的PHPUnit项目。Phpunit和Jenkins

该项目的结构如下: PHPProjectName

  • 源文件
    • (不包含任何东西)
  • Selenium测试文件
    • 包含我所有的Selenium测试PHP文件 - 扩展类PHPUnit_Extensions_SeleniumTestCase
  • 包含路径
    • C:\ Program Files文件\ PHP
    • C:\ Program Files文件\ PHP \ PEAR \ PHPUnit的

然后我通过运行启动硒服务器手动运行java -jar selenium-server-standalone-2.24.1.jar

执行我的所有硒测试php文件的php脚本工作正常。

但是现在我想使用Jenkins作为测试管理工具来在此文件夹中构建并执行我的PHPunit测试。我猜的步骤是:

  • 安装詹金斯
  • 写出PHPUnit的构建脚本测试
  • 通过詹金斯
  • 执行构建脚本

的步骤是正确的?有没有人完成或知道如何设置?

非常感谢,

回答

0

我曾与各种平台做了很多次。你的步骤通常是正确的,应该可以工作,但管理服务器并不总是那么简单。 Selenium RC服务器如果长时间处于打开状态会变得不稳定,因此您必须以某种方式对其进行管理。

您可以设置第二个Jenkins作业,每天运行一次或两次以重置您的服务器。然而,更好的选择是编写一个简单的测试框架,关闭所有打开的服务器,然后在运行测试之前启动新的服务器实例。您当然也可以使用cron作业来重置服务器,但如果您安装了Jenkins,则通过jenkins作业可以更轻松地完成此操作。

当然最好的选择是切换到Webdriver,但这可能需要一些工作,具体取决于您的测试有多复杂。

+0

感谢抬头关于硒RC服务器不稳定。 – van 2012-07-20 15:27:14

+0

你有一个运行PHPunit脚本的ANT构建脚本,我打算在这里使用这个脚本http://www.unclecode.com/2012/06/automation-testing-using-integration-of-selenium-phpunit-蚂蚁和创建报告/但没有太多的运气...... – van 2012-07-20 15:31:27

+0

该链接的例子看起来是正确的,但我从来没有使用ANT + PHPUnit之前,所以我没有任何脚本,我可以分享。你有什么问题? – CIGuy 2012-07-20 17:21:23

0

我们对您所描述的设置有类似的设置。我们詹金斯运行作业定期重新启动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 & 

塞巴斯蒂安伯格曼维持了一堆模板使用詹金斯与PHP的位置: http://jenkins-php.org/

包括是必要的Ant脚本来运行PHPUnit的(这是非常简单的,只是调用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> 
0

你必须在jenkins中安装selenium插件,然后selenium服务器会自动启动jenkins,这将创建一个集线器。现在在客户端上,您必须启动连接到此集线器的节点。

:詹金斯硒服务器始终是相同的版本,从詹金斯硒插件。因此,如果硒插件名称是 硒插件3.1.0,那么它在硒服务器3.1.0上运行。

安装詹金斯硒插件后,那么你可以找到硒电网一个新的选项,点击它,你会得到更多的信息:

enter image description here

enter image description here

现在你必须启动一个像这样的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 

在我的情况,我用:

start java -jar -Dwebdriver.gecko.driver="C:\Webdrivers\GeckoDriver\geckodriver.exe" -Dwebdriver.chrome.driver="C:\Webdrivers\ChromeDriver\chromedriver.exe" selenium-server-standalone-3.1.0.jar -role node -hub http://172.25.201.100:4444/grid/register 

确保正确的路径geckodriver和chromedriver自己的实际位置。

现在节点应该连接到集线器,您可以开始测试。

更多的相关信息: https://github.com/SeleniumHQ/selenium/wiki/Grid2