Tengo una serie de pruebas escritas para un Laravel 5.1 aplicación, y actualmente estoy usando PHPUnit para ejecutar las pruebas. Estoy intentando investigar codeception ya que tenemos otras aplicaciones que no están integradas en Laravel, por lo que la codeception parece ser la forma más fácil de obtener una interfaz similar para las pruebas.
Tenemos un equipo bastante grande, por lo que preferiría usar un solo comando coherente para realizar pruebas en todos los proyectos en lugar de usar algunos codecept
y algunos usando phpunit
.
Esto es lo que he probado como mi 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
Pero me sale esta respuesta:
$ 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
Así que mi pregunta es esta:
¿Cómo convenzo a Codeception para que ejecute mis pruebas existentes de PHPUnit con la menor modificación posible?
Respuestas
3 para la respuesta № 1Después de mucho tiempo, descubrí que esEs posible, pero tiene que hacer algunas modificaciones en la forma en que se presentan sus pruebas. La ventaja, sin embargo, es que no le impide simplemente ejecutar PHPUnit.
Para la posteridad, aquí hay cómo hacerlo:
- Mueve tus pruebas unitarias y
TestCase.php
en una carpeta llamadaunit
bajo latests
carpeta.
Debe tener un aspecto como este:
tests/
tests/unit/
tests/unit/MyUnitTest.php
tests/unit/TestCase.php
- Añade el
unit.suite.yml
archivo en eltests/
carpeta.
Los contenidos deben verse algo así:
modules:
enabled:
- Laravel5:
environment_file: .env.testing
- Actualiza tu
composer.json
para con la carpeta correcta para la prueba classmap
En tus autoload-dev
sección:
"classmap": [
"tests/unit/TestCase.php"
]
- Actualiza tu
TestCase.php
cargarbootstrap.php
de la carpeta correcta.
Esto debería estar en el createApplication()
método en la parte superior 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;
}
Por fin correr composer dump-autoload
, y la codecepción debe ejecutarse. Como bonificación, phpunit
También debe seguir funcionando.