Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

282
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!