J'ai un certain nombre de tests écrits pour un Laravel 5.1 application, et j'utilise actuellement PHPUnit pour exécuter les tests. J'essaie d'étudier la réception de code car d'autres applications ne sont pas construites sur Laravel. Cette dernière semble donc être le moyen le plus simple d'obtenir une interface de test similaire.
Nous avons une équipe assez nombreuse, je préférerais donc utiliser une seule commande cohérente pour tester tous les projets plutôt que certains utilisant codecept
et certains utilisant phpunit
.
Voici ce que j’ai essayé comme codeception.yml
:
actor: Tester
paths:
tests: tests
log: storage/codeception/_output
data: storage/codeception/_data
support: storage/codeception/_support
envs: storage/codeception/_envs
modules:
enabled:
- Laravel5:
environment_file: .env
Mais je reçois cette réponse:
$ codecept run Codeception PHP Testing Framework v2.1.4 Powered by PHPUnit 4.8.18 by Sebastian Bergmann and contributors. [RuntimeException] Suite "" could not be found
Voici donc ma question:
Comment convaincre codeception d'exécuter mes tests PHPUnit existants avec le moins de modifications possible?
Réponses:
3 pour la réponse № 1Après beaucoup de temps, j’ai découvert que c’étaitpossible, mais vous devez apporter quelques modifications à la configuration de vos tests. Le bonus, c’est que cela ne vous empêche pas d’exécuter PHPUnit lui-même.
Pour la postérité, voici comment procéder:
- Déplacez vos tests unitaires et
TestCase.php
dans un dossier nomméunit
sous letests
dossier.
Ça devrait ressembler à ça:
tests/
tests/unit/
tests/unit/MyUnitTest.php
tests/unit/TestCase.php
- Ajouter le
unit.suite.yml
déposer dans letests/
dossier.
Le contenu devrait ressembler à ceci:
modules:
enabled:
- Laravel5:
environment_file: .env.testing
- Mettez à jour votre
composer.json
avec le bon dossier pour la classmap de test
Dans ton autoload-dev
section:
"classmap": [
"tests/unit/TestCase.php"
]
- Mettez à jour votre
TestCase.php
chargerbootstrap.php
du bon dossier.
Cela devrait être dans le createApplication()
méthode au sommet de TestCase.php
public function createApplication()
{
// $app = require __DIR__ . "/../bootstrap/app.php";
$app = require __DIR__ . "/../../bootstrap/app.php";
$app->make(IlluminateContractsConsoleKernel::class)->bootstrap();
return $app;
}
Enfin, lancez composer dump-autoload
, et la réception de code devrait fonctionner. En bonus, phpunit
devrait aussi encore courir.