2012-10-01 16 views
5

Vorrei:Come aggregare PHPUnit con il mio codice?

  • test Run con PHPUnit indipendentemente dal mio ambiente (e se PHPUnit o PEAR è installato o non)
  • risultati Mostra dei test sullo schermo, se possibile

Come può Lo faccio? Ho provato a scaricare il codice here e incluso Autoload.php ma ha ancora alcune dipendenze. Forse c'è un approccio migliore per questo che cercare di raggrupparlo con il mio codice ...?

risposta

1

Le dipendenze dipenderanno da quali componenti aggiuntivi si stanno utilizzando, PHPUnit di per sé dovrebbe essere autonomo. Dal momento che non esiste una soluzione di gestione dei pacchetti particolarmente coerente per PHP (e hai eliminato le opzioni più valide oltre alla reinvenzione delle ruote), la soluzione migliore sarebbe includere i file nell'albero di origine separati dal codice dell'applicazione. La creazione di una directory di pari livello da qualunque sia la tua APPLICATION_ROOT o simile sarebbe denominata "test" e che ha una "lib" o directory simile piena di PHPUnit e qualsiasi dipendenza necessaria per esso sarebbe probabilmente un buon piano. Non ci dovrebbero essere sovrapposizioni e una dipendenza unidirezionale dalla directory di test alla sorgente principale dell'applicazione.

Suppongo che tu stia cercando una pagina di prova automatizzata di assistenza, in modo da poter creare la singola pagina che include ciò che è necessario da quella directory di test. Idealmente se hai la directory web che espone le tue risorse statiche potresti avere il file PHP che ha il compito di caricare Front Controller per la tua applicazione includendo la cartella dell'applicazione dall'esterno della root del documento e poi un secondo file che carica il file suite di test. Ciò consentirebbe alla directory dell'applicazione di rimanere focalizzata sul codice dell'applicazione stesso, sulla directory di test per ospitare il codice di test e quindi sui 2 piccoli file include che hanno il compito di caricare le codebase (con qualsiasi tipo di definizioni di costanti condivise, ecc. estratto e mantenuto SECCO).

+0

Devo includere la libreria nel modo sbagliato, ma non ho visto alcuna menzione su come farlo sui documenti ufficiali. E sulla "pagina di test automatizzato healthceck", deve trovarsi all'interno della cartella del progetto, in modo che possa essere nel server di produzione al momento della distribuzione. Non so come visualizzare i test sullo schermo poiché la documentazione sembra parlare solo della riga di comando. –

+0

La visualizzazione dei risultati dovrebbe essere nella sezione di generazione dei report dei documenti (è anche possibile pubblicare i report in root del documento). I test dovrebbero essere all'interno della cartella distribuita se si va su quella rotta, ma dovrebbe essere un fratello della directory del codice dell'applicazione non al di sotto di essa. Ci dovrebbe essere un mezzo per spedire alle 2 diverse cartelle senza dover mescolare il codice. Per l'esecuzione, inizierei con il metodo della riga di comando (chiamato tramite PHP) poiché è in questo modo che i test verrebbero eseguiti manualmente o utilizzando uno strumento di generazione, quindi esamineremo lo swapping nelle chiamate API in seguito. –

+1

ma come includere correttamente la lib dal mio codice? e come eseguire i test da php stesso (senza la riga di comando)? –

2

Per includere PHPUnit nei file di origine Progetti Io suggerirei seguendo la guida:

Using PHPUnit From a Git Checkout dalla sezione PHPUnit Contributung.

Descrive tutti i pacchetti che è necessario installare e mostra di mostrare uno script runner/wrapper per l'eseguibile di phpunit.

#!/bin/bash 
php -d include_path='.:../phpunit/:../dbunit/:../php-code-coverage/:../php-file-iterator/:../php-invoker/:../php-text-template/:../php-timer:../php-token-stream:../phpunit-mock-objects/:../phpunit-selenium/:../phpunit-story/:/usr/local/lib/php' ../phpunit/phpunit.php $* 

È possibile adattare il percorso del bisogno o se si vuole avvolgerla in un altro script è possibile utilizzare anche phpunit un po 'di programmazione

require '/path/to/phpunit/PHPUnit/Autoload.php'; 
PHPUnit_TextUI_Command::main(); 

Questo presuppone che l'etere dispone di un file phpunit.xml.dist o che usi i parametri cli appropriati quando chiami lo script del wrapper.


È inoltre possibile utilizzare i pacchetti di pera e decomprimere tutte le versioni stabili, invece di lavorare da cassa git per risparmiare spazio su disco e pronti contro termine.Il wrapper script e tutto il lavoro percorso di inclusione è lo stesso :)


correlati SO domande:

PHP - Is there a portable version of PHPUnit?

PHPUNIT without installation

1

C'è una soluzione di gestione dei pacchetti coerente per PHP - http://getComposer.org . Ora ha anche un modo per installare PHPunit nel solito stile del compositore, http://packagist.org/packages/phpunit/phpunit

Con il software installato, lo script della riga di comando phpunit verrà inserito nella directory 'bin /' locale, quindi puoi chiamarlo, anche se tu probabilmente vorrai avere uno script di shell che imposta anche il file di configurazione che userà.

L'impostazione normale è una sottodirectory test/con la gerarchia delle classi extender di PHP che eseguono i test effettivi.

+0

.. nessuno dei due è compositore portatile. – Pacerier

Problemi correlati