Utilizzare la copertura PHPUnit remota in PhpStorm


3

Sto lavorando nella seguente configurazione:

Esiste una VM di sviluppo in esecuzione, in cui posso accedere alla base di codici e utilizzarla come ubicazione del progetto in PhpStorm. Tutto (nginx, database, phpunit, ...) è in esecuzione su quella VM. Ho una unità di rete connessa a quella VM, ma sono limitata ad accedere alla directory di checkout.

Ho configurato PHPUnit per creare un coverage.xml a cui posso accedere dal mio host.

Ora, voglio usare quei dati per mostrarmi la copertura del codice in PHPStorm, ma sembra che non ci sia modo di usare un file di copertura generato esternamente per questo. Sto eseguendo i test delle unità in remoto sulla VM, non utilizzando le funzionalità IDE (perché non riesco a trovare un modo per eseguire i test in remoto).

C'è qualche modifica o opzione che non ho riconosciuto?


L'unica idea che mi viene in mente è di dare un'occhiata a come PHPstorm invoca phpunit (crea sempre un file PHP che poi viene eseguito), forse puoi modificare il template e poi iniettare i dati dal sistema remoto. AFAIK Phpstorm non ha il concetto che Phpunit sia non eseguito sul codice nell'IDE; Phpstorm non ha il concetto che Phpunit sia eseguito sul codice in qualche altro sistema.
hakre

Risposte:


4

Sì, puoi usare qualunque coverage.xml all'interno di IDE purché abbia nomi di file corretti (anche se è stato generato da qualche altra parte). Ma deve essere fatto manualmente e non è molto comodo da usare su base frequente.

L'idea è:

  1. Esegui i test PHPUnit sulla macchina remota e genera coverage.xml.
  2. Elaboratelo utilizzando qualsiasi strumento adatto per sostituire i percorsi remoti tramite il percorso locale (ad esempio alcuni target Phing personalizzati, find semplice + sostituisci nell'editor di testo o qualsiasi altra cosa). Questo è, naturalmente, se i percorsi remoti differiscono dal locale. Altrimenti, basta saltarlo.
  3. Dì all'IDE di usare questo file per visualizzare i dettagli della copertura tramite Strumenti | Mostra dati sulla copertura del codice - Allega il file richiesto lì.
    Notare che: più probabilmente ( non l'ho usato da molto tempo, quindi forse è cambiato da allora ) dovrai rimuovere e quindi aggiungere nuovamente tale file ogni volta che ottieni un nuovo coverage.xml (che è il più grande fastidio) - IDE memorizza nella cache il contenuto di tale file. Dai un'occhiata questo biglietto per alcuni dettagli .

Grazie mille, ho provato questo in PHPStorm 5 e non ha funzionato. Proverò in PHPStorm 6

Ho usato questo quando questa funzionalità è stata appena introdotta in PhpStorm (v4 o 5) e la copertura integrata non funzionava correttamente (a causa di un bug specifico con le posizioni dei file). L'unica differenza rispetto a ciò che ho fatto prima è il percorso dei file.
LazyOne

1
Ho appena provato: se eseguo phpunit al di fuori di IDE (dalla riga di comando) e genera lì il file coverage.xml, posso quindi collegarlo all'IDE utilizzando il 3 ° passaggio senza problemi. Possibilmente funziona per te (se hai percorsi corretti) .. ma i colori di copertura predefiniti sono troppo sbiaditi / chiari e non riesci a vederli? (per impostazione predefinita viene evidenziata solo una piccola area nel gutter dell'editor)
LazyOne

Bam. Lavori. Non ho idea di cosa sia andato storto al primo tentativo, eccellente, grazie mille!
nico gawenda

1

Aggiornamento: almeno a partire da PHPStorm 2016.1 o eventualmente prima (ad esempio versione 9 o 10) è possibile ottenere automaticamente la copertura del codice PHPUnit utilizzando PHPUnit su SSH Server. Devi prima aggiungere un interprete PHP remoto usando i passaggi della guida ufficiale. Quindi, scegli semplicemente come interprete PHP di progetto predefinito. Quando si esegue un test, è possibile fare clic su "Esegui" MyTest "con copertura" e copia e carica automaticamente il file di copertura su SSH.

Fonte: https://confluence.jetbrains.com/display/PhpStorm/Running+PHPUnit+tests+over+SSH+on+a+remote+server+with+PhpStorm

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.