2012-07-20 71 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