Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

389
Vistas
¿Por qué no se encuentra mi clase TestCase personalizada cuando se ejecutan pruebas a través de PhpUnit?

Agregué PHPUnit a mi proyecto Symfony como se describe en la documentación . Crear y ejecutar la primera prueba que extiende Symfony\Bundle\FrameworkBundle\Test\WebTestCase no fue un problema.

Ahora me gustaría crear una subclase personalizada de WebTestCase que proporcione características comunes para otras clases de prueba:

 // .../projectDir/tests/BaseTestCase.php namespace My\Project\Tests; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class BaseTestCase extends WebTestCase { protected function doSomething() {} } // .../projectDir/tests/SomeTest.php namespace My\Project\Tests; use My\Project\Tests\BaseTestCase; class SomeTest extends BaseTestCase { protected function testSomething() { $this->doSomething(); ... } }

Cuando php bin/phpunit , aparece el error "Clase no encontrada":

 $ php bin/phpunit PHP Fatal error: Uncaught Error: Class 'My\Project\Tests\BaseTestCase' not found in /path/to/projectDir/tests/SomeTest.php:6 Stack trace: #0 /path/to/projectDir/vendor/phpunit/phpunit/src/Util/FileLoader.php(65): include_once() #1 /path/to/projectDir/vendor/phpunit/phpunit/src/Util/FileLoader.php(49): PHPUnit\Util\FileLoader::load('/path/to/...') #2 /path/to/projectDir/vendor/phpunit/phpunit/src/Framework/TestSuite.php(402): PHPUnit\Util\FileLoader::checkAndLoad('/path/to/...') #3 /path/to/projectDir/vendor/phpunit/phpunit/src/Framework/TestSuite.php(530): PHPUnit\Framework\TestSuite->addTestFile('/path/to/...') #4 /path/to/projectDir/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php(67): PHPUnit\Framework\TestSuite->addTestFiles(Array) #5 /path/to/proje in /kunden/100170_47877/webpages/pockey/webpage/dev/vendor/phpunit/phpunit/src/TextUI/Command.php on line 98

Revisé dos veces el nombre de la clase, el espacio de nombres y la declaración de use (que no debería ser necesaria, ya que ambas clases están en la misma carpeta/espacio de nombres).

¿Necesito registrar BaseTestCase en PHPUnit de alguna manera para que sea una superclase válida para mis pruebas?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Parece que le falta la declaración de las rutas de clase para su directorio de prueba.

Generalmente, para las clases de prueba en sí no es necesario, ya que PhpUnit cargará los archivos de prueba y leerá las clases directamente. Pero cualquier otra clase a la que se haga referencia en cualquiera de las pruebas deberá pasar por el cargador automático. Y si no ha declarado dónde encontrar el espacio de nombres Test , intentará encontrarlo con sus archivos de proyecto normales (por ejemplo, en src/ ).

Agregue una clave autoload-dev a su composer.json . Por ejemplo, algo como esto:

 { "autoload": { "psr-4": { "My\\Project\\": "src/" } }, "autoload-dev": { "psr-4": { "My\\Project\\Tests\\": "tests/" } } }

Vuelque el cargador automático después de esto ( composer dump-autload ), e intente ejecutar sus pruebas nuevamente.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda