2017-08-16 5 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(2番目のテストはありません)、変更した場合は

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

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

は、まったくのテストはありません。何が間違っているのか分かりません

+0

テストフォルダの異なるフォルダにテストを書き込むと、設定が機能します( ' tests/AppBundle') –

答えて

1

phpunit.xml.distがどのように設定されているかで始めましょう。 1つのテストスイートが定義されています:

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

phpunitがテストの対象となる場所です。彼らはファイル名がTestで終わるような通常の規則に従わなければならず、各テストメソッドにはtestの接頭辞を付ける必要があります。

また、あなたのスクリーンショットからは、トップレベルのテスト/フォルダ(app /、src /などのすぐ隣)があることがわかります。あなたの他のテストが中に配置される場所であると考えられる

2番目のフォルダは、あなたがベストプラクティスに従うならば、あなたもAppBundleからテストを置く場所です。私はこれが3間、いつか設立したと思うhttps://symfony.com/doc/current/best_practices/tests.html

を.xリリースサイクル。

理論的には、src/AppBundle/Testsをtests/AppBundleにコピーすることができるはずです。 SRC/CoreBundle /テストは、実際にテストクラス、テストのために使用される唯一のヘルパーが含まれていないような場所に滞在することができます

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

あなたのフィルタ:今、あなたはあなたのテストスイートの構成を更新することができます。

すべてのテストがバンドルで区切られた1つの大きなテストフォルダにあるので、PHPUnit_Framework_TestCaseを拡張するクラスに対してこのフォルダを検索するとよいでしょう。 PHPUnit 6.0では、更新が必要な名前空間がPHPUnit\Framework\TestCaseであるため、PHPUnitはそれらのテストを無視します。

+0

あなたの返信ありがとう!私は原則としてこれを行い、すべてのテストはテストフォルダに移されました。 –

関連する問題