Por que estou recebendo esse erro de PHP?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
Por que estou recebendo esse erro de PHP?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
Respostas:
A documentação do PHPUnit diz que costumava incluir / exigir o PHPUnit / Framework.php, da seguinte maneira:
require_once ('PHPUnit/Framework/TestCase.php');
ATUALIZAR
A partir do PHPUnit 3.5, há uma classe interna de carregador automático que tratará disso para você:
require_once 'PHPUnit/Autoload.php';
Obrigado a Phoenix por apontar isso!
require_once 'PHPUnit/Autoload.php'
PHPUnit/Autoload.php
e PHPUnit/Framework/TestCase.php
, minha pasta é meio que semelhantePHPUnit/Framework/MockObject
PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
Para aqueles que chegaram aqui após atualizar o phpunit para a versão 6 ou superior, lançada em 03-02-2017 (por exemplo, com o compositor), você pode estar recebendo este erro porque o código do phpunit agora está no namespace (verifique o registro de alterações ).
Você precisará refatorar coisas como \PHPUnit_Framework_TestCase
a\PHPUnit\Framework\TestCase
Para uma versão superior do phpunit, como 6.4, você deve usar o espaço de nome PHPUnit \ Framework \ TestCase
use TestCase em vez PHPUnit_Framework_TestCase
// use the following namespace
use PHPUnit\Framework\TestCase;
// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {
}
Você pode receber esse erro porque colocou o nome no arquivo. Nesse caso, você precisará especificar que PHPUnit_Framework_TestCase está no espaço de nomes global, precedendo-o com uma barra invertida:
namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}
Enviei um PR bruto para iniciar a conversa para corrigir a documentação .
class YourNiceTest extends PHPUnit_Framework_TestCase
basta adicionar o \ na frente da classe estendida, como em class YourNiceTest extends \PHPUnit_Framework_TestCase
- Isso funcionou para mim, usando Symfony 2.8
e incluindo o phpunit
arquivo do compositor baixado como uma dependência local com"phpunit/phpunit": "^4.8"
Eu estava executando testes do PHPUnit no PHP5 e, então, também precisava oferecer suporte ao PHP7. Isto é o que eu fiz:
No compositer.json:
"phpunit/phpunit": "~4.8|~5.7"
No meu arquivo de inicialização PHPUnit (no meu 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');
Em outras palavras, isso funcionará para testes escritos originalmente para o PHPUnit 4 ou 5, mas também precisam funcionar no PHPUnit 6.
Você pode simplesmente instalar o PHPUnit para executar 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
Executar teste único
E então execute o teste do PHPunit:
phpunit test.php
O conteúdo do arquivo de teste é o seguinte:
<?php
class StackTest extends PHPUnit_Framework_TestCase
{
protected function setUp()
{
}
public function testSave()
{
}
}
Executar suíte de testes
Configuração do conjunto de testes: demosuite.xml. demo
é o diretório que contém todos os testes. Os arquivos de teste devem ser nomeados como *_test.php
( suffix
).
<testsuites>
<testsuite name="DemoTestSuite">
<directory suffix="test.php">demo</directory>
</testsuite>
</testsuites>
O conjunto de testes é executado com os seguintes comandos:
phpunit -c demosuite.xml --testsuite DemoTestSuite
PHPUnit_Framework_TestCase
. Você realmente precisa usar... extends PHPUnit\Framework\TestCase
mv phpunit /usr/local/bin/phpunit
e depois sudo chmod +x /usr/local/bin/phpunit
. Definir o arquivo como executável antes de movê-lo nunca funcionou no Vagrant Ubuntu. Não sei por que ... Mas, caso alguém esteja lutando com isso, espero que isso ajude.
Suposição:
Phpunit (3.7) está disponível no ambiente do console.
Açao:
Digite o seguinte comando no console:
SHELL> phpunit "{{PATH TO THE FILE}}"
Comentários:
Você não precisa incluir nada nas novas versões do PHPUnit, a menos que não queira executar no console. Por exemplo, executando testes no navegador.
Eu uso o ZF2 e trabalho para mim quando substituído 'PHPUnit_Framework_TestCase' por '\ PHPUnit \ Framework \ TestCase'
Se você tem Centos ou outra distribuição Linux, você precisa instalar o pacote phpunit, fiz isso com o yum install phpunit e funcionou. Talvez você precise adicionar um repositório, mas acho que ele deve funcionar bem com os padrões (eu tenho o CentOS 7)
Pode ser que você esteja executando os testes principais do WordPress e tenha atualizado recentemente o seu PhpUnit para a versão 6. Se for esse o caso, a alteração recente no namespacing no PhpUnit quebrará seu código.
Felizmente, há um patch para os testes principais em https://core.trac.wordpress.org/changeset/40547, que resolverá o problema. Também inclui alterações no travis.yml, que você pode não ter na sua instalação; se for esse o caso, será necessário editar o arquivo .diff para ignorar o patch do Travis.
Edite o arquivo do patch para remover a parte Travis do patch, se você não precisar. Exclua da parte superior do arquivo até logo acima desta linha:
Index: /branches/4.7/tests/phpunit/includes/bootstrap.php
Salve o diff no diretório acima do seu diretório / includes / - no meu caso, esse era o próprio diretório do Wordpress
Use a ferramenta de correção Unix para corrigir os arquivos. Você também precisará remover as primeiras barras para passar de uma estrutura de diretório absoluta para uma relativa. Como você pode ver no ponto 3 acima, existem cinco barras antes do diretório de inclusão, das quais um sinalizador -p5 se livrará.
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
Depois disso, meus testes foram executados corretamente novamente.
AVISO: Command php bin/console generate:doctrine:crud
também criam TestController
em src/Tests
que ele possa jogar de erro quando você tentou iniciar o servidor se você não tem UnitTests
. Remova o arquivo, conserte-o!
Estou usando o php 5.6 na janela 10 com a versão zend 1.12 para eu adicionar
require_once 'PHPUnit / Autoload.php';
antes
classe abstrata Zend_Test_PHPUnit_ControllerTestCase estende PHPUnit_Framework_TestCase
trabalhou. Precisamos adicionar esta declaração acima no arquivo ControllerTestCase.php