2016-10-23 11 views
-1

DAOサービスをテストしたいと思います。phpunitでsymfonyサービスを使用

問題は、テストを実行しても何も追加されないということです。テストは実行されません。 しかし、私は、設定ファイルphpunit.xml.distがOKであることを知っています。たとえば、 "use"行を間違えてテストを行った場合、エラーが表示されます。

だから私はあなたの助けが必要です。..

私の最初のテスト:

namespace RepositoryBundle\Tests\DAO; 

use RepositoryBundle\Entity\User; 
use RepositoryBundle\Enum\RoleEnum; 
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; 


class UserDAOTest extends KernelTestCase 
{ 
    private $userDAO; 
    private $logger; 

    public function setUp() 
    { 
     self::bootKernel(); 
     $this->userDAO = static::$kernel->getContainer()->get('repository.userDAO'); 
     $this->logger = static::$kernel->getContainer()->get('logger'); 
     $logger->notice('Show the log'); // Nothing is in my console.. (I configure Monolog to display in the console) 
    } 

    public function testTRUC() 
    { 
     //Stupid test but not executed !!!??? 
     $i = 1; 
     $this->assertTrue($i == 1); 
    } 

    public function testCreate() 
    { 
     //Real test but not executed !!!??? 
     $user1 = new User(); 
     $user1->setName("TestName"); 
     $user1->setEmail("TestEmail"); 
     $user1->setPassword("TestPassword"); 
     $user1->setMemberNumber(12345); 
     $user1->setAdmin(true); 
     $user1->setRole(RoleEnum::User); 

     $user1 = $UserDAO->save($user1); 

     $this->assertTrue($user1->getId() > 0); 
     $this->assertEquals("TestName", $user1->getName()); 
     $this->assertEquals("TestEmail", $user1->getEmail()); 
     $this->assertEquals("TestPassword", $user1->getPassword()); 
     $this->assertEquals(12345, $user1->getMemberNumber()); 
     $this->assertEquals(true, $user1->isAdmin()); 
     $this->assertEquals(RoleEnum::User, $user1->getRole()); 
    } 

phpunit.xml.dist私はコマンドを実行

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="phpunit.xsd" 
     bootstrap="bootstrap.php.cache" 
     backupGlobals="false" 
     verbose="true"> 

    <testsuites> 
     <testsuite name="Project Test Suite"> 
      <directory>../src/*Bundle/Tests</directory> 
     </testsuite> 
    </testsuites> 

    <php> 
     <const name="PHPUNIT_TESTSUITE" value="true"/> 
    </php> 
</phpunit> 

A screen of the console

ご協力ありがとうございます。 symfonyとPHPUnitの新機能です。この種の問題で多くの時間を浪費しました。

+0

useステートメントに関するあなたのコメントにもかかわらず、テストが実行されていないことはかなり明らかです。セットアップでダイで確認し、phpunit xmlファイルに行ったことを確認してください。 – Cerad

+0

「セットアップでダイで確認する」という意味が分かりません サービスuserDAOに関するすべての行を削除しても正常に動作するため、PHPunitが正しく構成されていると思います。 それでも私はこれらの情報を追加します – Namiro

答えて

1

私が間違っていても、あなたのテストがsrc\RepositoryBundle\Tests\DAOにあり、あなたがフォルダーのアプリケーションでphpunitを実行していれば私を修正してください...

試してみてくださいphpunitもちろん、を編集するにはcオプションに引数が必要です/)。

設定は '../src/*Bundle/Tests'を検索するように設定されています。アプリケーションフォルダをテストの場所として指定すると、設定は考慮されません。

+0

私が 'phpunit -c'を実行するときには、コマンドが読む必要がある設定ファイルがどこにあるのかを伝えなければなりません。この設定ファイルはapp /にあります。 同じ設定でもsetUp()がなく、$ UserDAO - > ...の呼び出しがないため、テストが実行されるため、テストはphpunitコマンドで実行されていると確信しています。 問題は私のサービスで呼び出されます。しかし、私は理由を知らない。 – Namiro

+0

あなたが設定ファイルを提供しなければならない場合、-cオプションを指定すると、おそらく間違った方法で、私の答えを修正しました。 – Senaria21

+0

setUp()をデバッグしようとしましたか?つまり、最初にdaoサービスのコメントを外すだけかもしれません。それが働いているなら、あなたのサービスにはまったく問題があります。 – Senaria21

関連する問題