2016-07-26 31 views
3

我的一些測試用例使用自定義測試庫。這些測試用例也很慢。所以我想只在構建服務器上運行它們,而不是在本地運行。我想在本地運行其他測試。排除在phpunit中加載某些測試

以下是目錄結構。 slow目錄中的那些是應該排除的慢測試用例。

/tests/unit-tests/test-1.php 
/tests/unit-tests/test-2.php 
/tests/unit-tests/slow/test-1.php 
/tests/unit-tests/slow/test-2.php 
/tests/unit-tests/foo/test-1.php 
/tests/unit-tests/bar/test-2.php 

我嘗試使用@group註釋創建組。這有效,但問題是這些測試文件正在加載(雖然測試沒有執行)。由於它們需要未在本地安裝的測試庫,因此出現錯誤。

創建phpunit.xml配置的最佳方式是什麼,以便這些慢速測試默認排除(甚至沒有加載),並且可以在需要時執行?

回答

4

有2個選項:

1)在你的phpunit.xml創建2個測試服 - 一個CI服務器和一個地方發展

<testsuites> 
    <testsuite name="all_tests"> 
     <directory>tests/unit-tests/*</directory> 
    </testsuite> 
    <testsuite name="only_fast_tests"> 
     <directory>tests/unit-tests/*</directory> 
     <!-- Exclude slow tests --> 
     <exclude>tests/unit-tests/slow</exclude> 
    </testsuite> 
</testsuites> 

因此CI服務器上可以運行

phpunit --testsuite all_tests 

和本地

phpunit --testsuite only_fast_tests 

顯然,您可以根據需要命名測試套件。

2)我認爲最好的辦法是:

  • 創建phpunit.xml.dist和配置的PHPUnit的默認執行(爲CI服務器和所有那些誰通過配置的PHPUnit的本地執行
  • 修改phpunit.xml只克隆庫) (通過將<exclude>tests/unit-tests/slow</exclude>添加到默認 測試套件)
  • 從版本控制中排除phpunit.xml

docs

如果不使用(按順序)存在於 當前工作目錄和--configuration phpunit.xml或phpunit.xml.dist,所述 配置將自動從該文件讀取。


一些鏈接:

The XML Configuration File. Test Suites

How to run a specific phpunit xml testsuite?