¿Por qué recibo este error de PHP?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
¿Por qué recibo este error de PHP?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
Respuestas:
La documentación de PHPUnit dice que solía decir para incluir / requerir PHPUnit / Framework.php, de la siguiente manera:
require_once ('PHPUnit/Framework/TestCase.php');
ACTUALIZAR
A partir de PHPUnit 3.5, hay una clase de autocargador integrada que se encargará de esto por usted:
require_once 'PHPUnit/Autoload.php';
¡Gracias a Phoenix por señalar esto!
require_once 'PHPUnit/Autoload.php'
PHPUnit/Autoload.php
y PHPUnit/Framework/TestCase.php
mi carpeta es comoPHPUnit/Framework/MockObject
PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
Para aquellos que llegan aquí después de actualizar phpunit a la versión 6 o superior lanzada el 2017-02-03 (por ejemplo, con el compositor), es posible que obtenga este error porque el código phpunit ahora tiene un espacio de nombres (consulte el registro de cambios ).
Tendrá que refactorizar cosas como \PHPUnit_Framework_TestCase
a\PHPUnit\Framework\TestCase
Para una versión superior de phpunit como 6.4 Debe usar el espacio de nombres PHPUnit \ Framework \ TestCase
use TestCase en su lugar PHPUnit_Framework_TestCase
// use the following namespace
use PHPUnit\Framework\TestCase;
// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {
}
Puede recibir este error porque espació el nombre del archivo. Si es así, deberá especificar que PHPUnit_Framework_TestCase está en el espacio de nombres global precediéndolo con una barra diagonal inversa:
namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}
Envié un PR crudo para comenzar una conversación para corregir la documentación .
class YourNiceTest extends PHPUnit_Framework_TestCase
simplemente agregue el \ delante de la clase extendida, como en class YourNiceTest extends \PHPUnit_Framework_TestCase
- Esto funcionó para mí, usando Symfony 2.8
e incluyendo el phpunit
archivo del compositor descargado como una dependencia local con"phpunit/phpunit": "^4.8"
Estaba ejecutando pruebas PHPUnit en PHP5, y luego, también necesitaba admitir PHP7. Esto es lo que hice:
En composer.json:
"phpunit/phpunit": "~4.8|~5.7"
En mi archivo de arranque PHPUnit (en mi caso /tests/bootstrap.php
):
// PHPUnit 6 introduced a breaking change that
// removed PHPUnit_Framework_TestCase as a base class,
// and replaced it with \PHPUnit\Framework\TestCase
if (!class_exists('\PHPUnit_Framework_TestCase') && class_exists('\PHPUnit\Framework\TestCase'))
class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase');
En otras palabras, esto funcionará para las pruebas escritas originalmente para PHPUnit 4 o 5, pero luego también tenía que funcionar en PHPUnit 6.
Simplemente puede instalar PHPUnit para ejecutar comandos ( https://github.com/sebastianbergmann/phpunit/#php-archive-phar ):
wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit
Ejecutar prueba única
Y luego ejecuta la prueba PHPunit:
phpunit test.php
El contenido del archivo de prueba es el siguiente:
<?php
class StackTest extends PHPUnit_Framework_TestCase
{
protected function setUp()
{
}
public function testSave()
{
}
}
Ejecutar suite de prueba
Configuración del conjunto de pruebas: demosuite.xml. demo
es el directorio que contiene todas las pruebas. Los archivos de prueba deben nombrarse como *_test.php
( suffix
).
<testsuites>
<testsuite name="DemoTestSuite">
<directory suffix="test.php">demo</directory>
</testsuite>
</testsuites>
El conjunto de pruebas se ejecuta con los siguientes comandos:
phpunit -c demosuite.xml --testsuite DemoTestSuite
PHPUnit_Framework_TestCase
. Realmente tienes que usar... extends PHPUnit\Framework\TestCase
mv phpunit /usr/local/bin/phpunit
y después sudo chmod +x /usr/local/bin/phpunit
. Establecer el archivo como ejecutable antes de moverlo nunca funcionó en Vagrant Ubuntu. No tengo idea de por qué ... Pero en caso de que alguien esté luchando con esto, espero que esto ayude.
Suposición:
Phpunit (3.7) está disponible en el entorno de la consola.
Acción:
Ingrese el siguiente comando en la consola:
SHELL> phpunit "{{PATH TO THE FILE}}"
Comentarios:
No necesita incluir nada en las nuevas versiones de PHPUnit a menos que no quiera ejecutarlo en la consola. Por ejemplo, ejecutar pruebas en el navegador.
Uso ZF2 y trabajo para mí cuando reemplacé 'PHPUnit_Framework_TestCase' por '\ PHPUnit \ Framework \ TestCase'
Si tiene Centos u otra distribución de Linux, debe instalar el paquete phpunit, lo hice con yum install phpunit y funcionó. Tal vez pueda tener que agregar un repositorio, pero creo que tiene que funcionar sin problemas con los predeterminados (tengo CentOS 7)
Es muy posible que esté ejecutando pruebas principales de WordPress y que haya actualizado recientemente su PhpUnit a la versión 6. Si ese es el caso, entonces el cambio reciente al espacio de nombres en PhpUnit habrá roto su código.
Afortunadamente, hay un parche para las pruebas principales en https://core.trac.wordpress.org/changeset/40547 que solucionará el problema. También incluye cambios en travis.yml, que puede que no tenga en su configuración; Si ese es el caso, deberá editar el archivo .diff para ignorar el parche de Travis.
Edite el archivo de parche para eliminar la parte de Travis del parche si no lo necesita. Eliminar desde la parte superior del archivo hasta justo encima de esta línea:
Index: /branches/4.7/tests/phpunit/includes/bootstrap.php
Guarde el diff en el directorio arriba de su directorio / include /, en mi caso este fue el directorio de Wordpress en sí
Use la herramienta de parche Unix para parchear los archivos. También deberá quitar las primeras barras para pasar de una estructura de directorio absoluta a una relativa. Como puede ver en el punto 3 anterior, hay cinco barras antes del directorio de inclusión, del cual se eliminará un indicador -p5.
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
Después de hacer esto, mis pruebas volvieron a funcionar correctamente.
AVISO: Comando php bin/console generate:doctrine:crud
también crean TestController
en src/Tests
lo que puede tirar de error cuando intentaba iniciar el servidor si no se tiene UnitTests
. Elimina el archivo ¡arréglalo!
Estoy usando php 5.6 en la ventana 10 con la versión zend 1.12 para mí agregando
require_once 'PHPUnit / Autoload.php';
antes de
clase abstracta Zend_Test_PHPUnit_ControllerTestCase extiende PHPUnit_Framework_TestCase
trabajó. Necesitamos agregar esta declaración anterior en el archivo ControllerTestCase.php