2017-08-16 75 views
0

我的項目包含2個軟件包,我只想在其中一個測試中運行測試。使用symfony的3.3PHPUnit的6.3.0Phpunit啓動所有測試或不啓動所有測試,忽略配置

phpunit.xml.dist

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.3/phpunit.xsd" 
     backupGlobals="false" 
     colors="true" 
     bootstrap="./src/CoreBundle/Tests/autoloadWithIsolatedDatabase.php" 
> 
    <php> 
     <ini name="error_reporting" value="-1" /> 
     <server name="KERNEL_CLASS" value="AppKernel" /> 
    </php> 

    <testsuites> 
     <testsuite name="App"> 
      <directory>src/AppBundle/Tests</directory> 
     </testsuite> 
    </testsuites> 

    <filter> 
     <whitelist> 
      <directory>src</directory> 
      <exclude> 
       <directory>src/*Bundle/Resources</directory> 
       <directory>src/*Bundle/Tests</directory> 
       <directory>src/*/*Bundle/Resources</directory> 
       <directory>src/*/*Bundle/Tests</directory> 
       <directory>src/*/Bundle/*Bundle/Resources</directory> 
       <directory>src/*/Bundle/*Bundle/Tests</directory> 
      </exclude> 
     </whitelist> 
    </filter> 
</phpunit> 

和結構工程

structure

此配置將運行所有測試AppBundle和CoreBundle(在第二個沒有測試),如果你改變

<directory>src/AppBundle/Tests</directory> 

<directory>src/CoreBundle/Tests</directory> 

則會有完全沒有測試。我不明白什麼是錯的

+0

如果我在測試文件夾中的不同文件夾中寫入測試 - 設置工作('測試/ AppBundle') –

回答

1

讓我們從您的phpunit.xml.dist配置開始。你有一個測試套件定義:

<testsuites> 
    <testsuite name="App"> 
     <directory>src/AppBundle/Tests</directory> 
    </testsuite> 
</testsuites> 

這是phpunit將考慮進行測試的地方。他們必須符合慣例,例如文件名以Test結尾,每種測試方法必須以test作爲前綴。

也可以從你的屏幕截圖中瞭解到,你有一個頂級測試/文件夾(就在app /,src /等旁邊)。這可能是你的其他測試都放在

第二個文件夾是你也應該把你的測試從的appbundle如果你遵循的最佳做法:https://symfony.com/doc/current/best_practices/tests.html

我認爲這是3的某個時候成立.x發佈週期。

從理論上講,你應該能夠將src/AppBundle/Tests複製到測試/ AppBundle,並且希望所有東西都能正常工作。現在,您可以更新您的測試套件配置:

<testsuites> 
    <testsuite name="App"> 
     <directory>tests/</directory> 
    </testsuite> 
</testsuites> 

您的過濾器可以留在地方作爲SRC/CoreBundle /測試實際上並不包含測試類,僅用於測試的幫手。

現在您已經將一個大型測試文件夾中的所有測試分爲多個包,您可能需要在此文件夾中搜索延伸到PHPUnit_Framework_TestCase的類。由於PHPUnit 6.0引入了名稱空間,因此需要使用PHPUnit\Framework\TestCase進行更新,否則PHPUnit將忽略這些測試。

+0

感謝您的回覆!原則上我這樣做了,所有的測試都被移到了測試文件夾中,因爲There配置工作。 –