/ / Utiliser Codeception pour exécuter les tests existants de Laravel 5.1 PHPUnit - php, tests unitaires, laravel, phpunit, codeception

Utilisation de Codeception pour exécuter des tests existants de Laravel 5.1 PHPUnit - php, tests unitaires, laravel, phpunit, codeception

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 № 1

Aprè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:

  1. Déplacez vos tests unitaires et TestCase.php dans un dossier nommé unit sous le tests dossier.

Ça devrait ressembler à ça:

tests/
tests/unit/
tests/unit/MyUnitTest.php
tests/unit/TestCase.php
  1. Ajouter le unit.suite.yml déposer dans le tests/ dossier.

Le contenu devrait ressembler à ceci:

modules:
enabled:
- Laravel5:
environment_file: .env.testing
  1. Mettez à jour votre composer.json avec le bon dossier pour la classmap de test

Dans ton autoload-dev section:

"classmap": [
"tests/unit/TestCase.php"
]
  1. Mettez à jour votre TestCase.php charger bootstrap.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.