2013-09-06 1 views
1

J'ai ajouté quelques tests à un nouveau projet Silverstripe, ils résident dans app/tests/ (app est ce que j'ai renommé mysite, _config.php a également obtenu ce dans sa variable de $project).Impossible d'obtenir des tests Silverstripe pour afficher les résultats

J'ai deux fichiers:

APHPUnitTest.php

class APHPUnitTest extends SapphireTest { 

    static $fixture_file = 'APHPUnitTest.yml'; 

    public function testURLGeneration() { 

     $expectedURLs = array(
      'home' => 'home', 
      'about' => 'about-us' 
     ); 

     foreach($expectedURLs as $fixture => $urlSegment) { 
      $obj = $this->objFromFixture('Page', $fixture); 
      $this->assertEquals($urlSegment, $obj->URLSegment); 
     } 
    } 
} 

APHPUnitTest.yml

Page: 
    home: 
     Title: Home 
    about: 
     Title: About Us 

Le test apparaît sur /dev/tests, mais quand je le lance, je il suffit de voir l'en-tête:

APHPUnitTest 
dev → tests → APHPUnitTest 

et aucun résultat ... Je peux ajouter die; à mon test .php et ceux-ci arrêter la chargement de la page, de sorte que le fichier est en cours d'exécution bien, je ne suis pas sûr de savoir pourquoi cela ne fonctionne pas.

Lorsque je tente d'exécuter le test à partir de la ligne de commande, j'obtiens l'erreur class SapphireTest not found. Les tests PHPUnit non-silverstripe s'exécutent correctement à partir de la ligne de commande.

Répondre

1

J'ai résolu mon problème, mais il y avait deux choses qui le causaient alors j'ai pensé que je les mettrais tous les deux ici dans l'espoir que cela aide quelqu'un d'autre.

Le problème principal que j'avais ici était lié aux permissions de base de données. L'utilisateur de la base de données que j'exécutais les tests comme ayant seulement des autorisations pour le site Silverstripe en question. Les tests nécessitent que l'utilisateur puisse créer une base de données distincte pour chaque test. Accorder des autorisations suffisantes a résolu mon problème.

L'autre chose qui avait besoin de changer était mon phpunit.xml, il lisait encore mysite/tests quand il a besoin de changement de app/tests.

Questions connexes