Perché visualizzo questo errore PHP?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
Perché visualizzo questo errore PHP?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
Risposte:
La documentazione di PHPUnit dice usata per dire di includere / richiedere PHPUnit / Framework.php, come segue:
require_once ('PHPUnit/Framework/TestCase.php');
AGGIORNARE
A partire da PHPUnit 3.5, esiste una classe di caricatore automatico integrata che gestirà questo per te:
require_once 'PHPUnit/Autoload.php';
Grazie a Phoenix per averlo segnalato!
require_once 'PHPUnit/Autoload.php'
PHPUnit/Autoload.php
e PHPUnit/Framework/TestCase.php
, la mia cartella è un po 'comePHPUnit/Framework/MockObject
PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
Per coloro che arrivano qui dopo l'aggiornamento phpunit alla versione 6 o superiore rilasciato il 2017/02/03 (ad esempio, con il compositore), si può essere sempre questo errore perché il codice phpunit è ormai namespace (controllo changelog ).
Avrete bisogno di refactoring cose come \PHPUnit_Framework_TestCase
ad\PHPUnit\Framework\TestCase
Per versioni successive di phpunit come 6.4 È necessario utilizzare lo spazio dei nomi PHPUnit \ Framework \ TestCase
usa TestCase invece PHPUnit_Framework_TestCase
// use the following namespace
use PHPUnit\Framework\TestCase;
// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {
}
È possibile che venga visualizzato questo errore perché il nome è stato spaziato nel file. In tal caso, dovrai specificare che PHPUnit_Framework_TestCase si trova nello spazio dei nomi globale precedendolo con una barra rovesciata:
namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}
Ho inviato un PR grezzo per iniziare la conversazione per correggere la documentazione .
class YourNiceTest extends PHPUnit_Framework_TestCase
aggiungi il \ davanti alla classe estesa, come in class YourNiceTest extends \PHPUnit_Framework_TestCase
- Funzionava per me, usando Symfony 2.8
e includendo il phpunit
file nel compositore scaricato come dipendenza locale con"phpunit/phpunit": "^4.8"
Stavo eseguendo i test di PHPUnit su PHP5 e quindi dovevo supportare anche PHP7. Questo è quello che ho fatto:
In composer.json:
"phpunit/phpunit": "~4.8|~5.7"
Nel mio file bootstrap di PHPUnit (nel mio 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');
In altre parole, questo funzionerà per i test scritti originariamente per PHPUnit 4 o 5, ma poi anche per PHPUnit 6.
Puoi semplicemente installare PHPUnit per eseguire i comandi ( 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
Esegui test singolo
E quindi eseguire il test PHPunit:
phpunit test.php
Il contenuto del file di prova è il seguente:
<?php
class StackTest extends PHPUnit_Framework_TestCase
{
protected function setUp()
{
}
public function testSave()
{
}
}
Esegui la suite di test
Configurazione della suite di test: demosuite.xml. demo
è una directory che contiene tutti i test. I file di test devono essere denominati come *_test.php
( suffix
).
<testsuites>
<testsuite name="DemoTestSuite">
<directory suffix="test.php">demo</directory>
</testsuite>
</testsuites>
La suite di test viene eseguita con i seguenti comandi:
phpunit -c demosuite.xml --testsuite DemoTestSuite
PHPUnit_Framework_TestCase
. Devi davvero usare... extends PHPUnit\Framework\TestCase
mv phpunit /usr/local/bin/phpunit
e poi sudo chmod +x /usr/local/bin/phpunit
. L'impostazione del file come eseguibile prima di spostarlo non ha mai funzionato su Vagrant Ubuntu. Non ho idea del perché ... Ma nel caso qualcuno stia lottando con questo, spero che questo possa aiutare.
Assunzione:
Phpunit (3.7) è disponibile nell'ambiente console.
Azione:
Immettere il comando seguente nella console:
SHELL> phpunit "{{PATH TO THE FILE}}"
Commenti:
Non è necessario includere nulla nelle nuove versioni di PHPUnit a meno che non si desideri eseguire nella console. Ad esempio, l'esecuzione di test nel browser.
Uso ZF2 e lavoro per me quando viene sostituito 'PHPUnit_Framework_TestCase' in '\ PHPUnit \ Framework \ TestCase'
Se hai Centos o altra distribuzione Linux devi installare il pacchetto phpunit, l'ho fatto con yum install phpunit e ha funzionato. Forse potresti dover aggiungere un repository, ma penso che debba funzionare senza problemi con quelli predefiniti (ho CentOS 7)
Può darsi che tu stia eseguendo i test di base di WordPress e di recente hai aggiornato PhpUnit alla versione 6. In tal caso, la recente modifica allo spazio dei nomi in PhpUnit ha infranto il tuo codice.
Fortunatamente, c'è una patch per i test fondamentali su https://core.trac.wordpress.org/changeset/40547 che risolverà il problema. Include anche modifiche a travis.yml, che potresti non avere nella tua configurazione; in tal caso, dovrai modificare il file .diff per ignorare la patch Travis.
Modifica il file patch per rimuovere la parte Travis della patch se non ti serve. Elimina dalla parte superiore del file appena sopra questa riga:
Index: /branches/4.7/tests/phpunit/includes/bootstrap.php
Salva il diff nella directory sopra la tua directory / Includes / - nel mio caso questa era la stessa directory di Wordpress
Utilizzare lo strumento patch Unix per patchare i file. Dovrai anche eliminare le prime barre per passare da una struttura di directory assoluta a una relativa. Come puoi vedere dal punto 3 sopra, ci sono cinque barre prima della directory include, di cui un flag -p5 si libererà per te.
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
Dopo averlo fatto, i miei test sono stati eseguiti di nuovo correttamente.
AVVISO:php bin/console generate:doctrine:crud
anche il comando crea TestController
in src/Tests
modo che possa generare errori quando si tenta di avviare il server in caso contrario UnitTests
. Rimuovi il file risolvilo!
Sto usando php 5.6 su Windows 10 con zend 1.12 versione per me aggiungendo
require_once 'PHPUnit / Autoload.php';
prima
classe astratta Zend_Test_PHPUnit_ControllerTestCase estende PHPUnit_Framework_TestCase
lavorato. Dobbiamo aggiungere questa affermazione sopra nel file ControllerTestCase.php