/ / Uso de Codeception para ejecutar las pruebas existentes de PHPUnit de Laravel 5.1 - php, unit-testing, laravel, phpunit, codeception

Uso de Codeception para ejecutar las pruebas existentes de PHPUnit de Laravel 5.1 - php, unit-testing, laravel, phpunit, codeception

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

Despué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:

  1. Mueve tus pruebas unitarias y TestCase.php en una carpeta llamada unit bajo la tests carpeta.

Debe tener un aspecto como este:

tests/
tests/unit/
tests/unit/MyUnitTest.php
tests/unit/TestCase.php
  1. Añade el unit.suite.yml archivo en el tests/ carpeta.

Los contenidos deben verse algo así:

modules:
enabled:
- Laravel5:
environment_file: .env.testing
  1. Actualiza tu composer.json para con la carpeta correcta para la prueba classmap

En tus autoload-dev sección:

"classmap": [
"tests/unit/TestCase.php"
]
  1. Actualiza tu TestCase.php cargar bootstrap.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.