2011-01-29 2 views
11

Sto scrivendo unit test usando una versione precedente di PHPUnit (3.4) e quindi non posso usare tutte le asserzioni supportate elencate nel manuale di 3.5 e 3.6. Anche se potrei riprogettare i test per il supporto immediato nel mio ambiente qui, mi piacerebbe rendere i miei test dipendenti dalla versione corrente di PHPUnit, in modo che stia usando assertsInstanceOf() non appena l'ambiente di test mio o di qualsiasi altro sta fornendo PHPUnit 3.5+ .Come rilevare la versione di PHPUnit

Ho pensato che ci sarebbe stata una sorta di costante definita automaticamente da PHPUnit, ma non ho trovato alcuna documentazione su di esso.

Esiste un modo per ottenere ciò senza richiedere la definizione di costante quando si chiama la riga di comando?

+2

'phpunit --version'? –

+0

@zerkms: cercare di rimanere sincronizzati con la mia distribuzione. Aspettarsi che altri eseguano test sui loro sistemi e quindi probabilmente non utilizzano il software più recente. – soletan

+0

@Marc B: Voglio implementarlo nel codice, poiché sto richiamando tutti i test con "phpunit " e quindi richiede alcuni test per saltare o passare comportamento a seconda della versione di phpunit utilizzata ... una sorta di codifica condizionale. – soletan

risposta

3

Per rendere il test incompleto per le vecchie versioni:

if (
     !method_exists('PHPUnit_Runner_Version','id') 
     || version_compare(PHPUnit_Runner_Version::id(), '3.7', '<=') 
    ) { 
     $this->markTestIncomplete('need phpunit >= 3.7 to run this test'); 
    } 
+0

Esiste dal 3.0, che ha più di 6 anni :-) Controllare se il metodo esiste in questo caso è qualcosa di strano :-) – zerkms

+0

scusa non ho avuto il tempo di controllare la cronologia dei commit di PHPUnit per scrivere una riga meno del codice –

+0

come fare lo stesso in phpUnit 6+? –

3

È possibile aggiungere an annotation prima della prova:

/** 
* @requires PHPUnit 3.7.32 
*/ 
function testRequiringCertainPHPUnit() { 
} 
0

Funziona su Mac:

phpunit --version 

@ Marc B