Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

390
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda