2016-03-31 7 views
1

Hier ist meine phpunit.xml DateiPHPUnit und Symfony2 kann nicht globale Variablen zugreifen

<?xml version="1.0" encoding="UTF-8"?> 

<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html --> 
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd" 
     backupGlobals="false" 
     backupStaticAttributes="false" 
     processIsolation="false" 
     colors="true" 
     stopOnFailure="false" 
     syntaxCheck="false" 
     bootstrap="bootstrap.php.cache" 
     convertErrorsToExceptions="true" 
     convertNoticesToExceptions="true" 
     convertWarningsToExceptions="true" 
> 
    <testsuites> 
     <testsuite name="Project Test Suite"> 
      <directory>../src/*/*Bundle/Tests</directory> 
      <directory>../src/*/Bundle/*Bundle/Tests</directory> 
      <directory>../src/*Bundle/Tests</directory> 
     </testsuite> 
    </testsuites> 

    <php> 
     <server name="KERNEL_DIR" value="./" /> 
     <var name="DB_DSN" value="mysql:dbname=test_xxx;host=localhost" /> 
     <var name="DB_USER" value="root" /> 
     <var name="DB_PASSWD" value="" /> 
     <var name="DB_DBNAME" value="test_xxx" /> 
    </php> 


    <logging> 
     <log type="coverage-html" target="build/coverage" title="App Code Coverage" 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> 
      <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> 

In meinem:

  • src
    • AppBundle
      • Tests
        • AbstractDatabaseTestCase.php

AbstractDatabaseTestCase.php:

abstract class AbstractDatabaseTestCase extends \PHPUnit_Extensions_Database_TestCase{ 

    /** 
    * 
    *@var PDO 
    * 
    */ 
    static $pdo; 

    /** 
    * 
    *@var \Doctrine\DBAL\Connection description 
    * 
    */ 
    static $dbal; 

    private $conn; 

    final public function getConnection() 
    { 
     var_dump($GLOBALS); 
// here my GLOBALS['DB_DSN'], GLOBALS['DB_USER'], GLOBALS['DB_PASSWD'] are not seen. 

     if ($this->conn === null) { 
      if (self::$pdo == null) { 
       self::$pdo = new \PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']); 
      } 
      $this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']); 
     } 

     return $this->conn; 
    } 

Wie Sie aus den Kommentaren, angesichts der Tatsache sehen, dass ich in der Dokumentation folgen, meine Klasse scheint die Globals, die in der Datei phpunit.xml definiert sind, nicht zu sehen.

Haben Sie irgendwelche Ideen? Habe ich etwas verpasst?

Vielen Dank!

+0

Haben Sie $ _SERVER überprüft? –

+0

@RenatoMendesFigueiredo Es hat das gleiche für alle Variablen getan, jetzt vorausgesetzt, dass es mich zu der Antwort führte unten, danke! – Gabriel

Antwort

0

In Symfony2 ist die Standard phpunit.xml nicht die in app/phpunit.xml, sondern im Stammverzeichnis der Anwendung. Setzen Sie alle Werte dort und alles hat gut funktioniert.