Verwenden Sie die Remote-Abdeckung von PHPUnit in PhpStorm

2387
nico gawenda

Ich arbeite im folgenden Setup:

Es läuft eine Entwicklungs-VM, auf der ich auf die Codebase zugreifen und sie als Projektspeicherort in PhpStorm verwenden kann. Alles (nginx, Datenbank, phpunit, ...) läuft auf dieser VM. Ich habe ein Netzlaufwerk, das mit dieser VM verbunden ist, kann jedoch nur auf das Checkout-Verzeichnis zugreifen.

Ich habe PHPUnit so konfiguriert, dass eine cover.xml erstellt wird, auf die ich von meinem Host aus zugreifen kann.

Jetzt möchte ich diese Daten verwenden, um die Codeabdeckung in PHPStorm anzuzeigen, aber es scheint keine Möglichkeit zu geben, eine extern erzeugte Abdeckungsdatei dafür zu verwenden. Ich führe die Komponententests remote auf der VM aus und verwende nicht die IDE-Funktionen (da ich keine Möglichkeit finde, die Tests remote auszuführen).

Gibt es irgendwelche Optimierungen oder Optionen, die ich nicht erkannt habe?

3
Die einzige Idee, die mir einfällt, ist, einen Blick darauf zu werfen, wie PHPstorm phpunit aufruft (es erstellt immer eine PHP-Datei, die dann ausgeführt wird). Vielleicht können Sie die Vorlage ändern und dann die Daten vom fernen System einfügen. AFAIK Phpstorm hat nicht das Konzept, dass Phpunit * nicht * auf dem Code in der IDE ausgeführt wird. Phpstorm hat nicht das Konzept, dass Phpunit in einem anderen System mit Code ausgeführt wird. hakre vor 11 Jahren 0

2 Antworten auf die Frage

4
LazyOne

Yes, you can use any coverage.xml inside IDE as long as it has correct file names (even if it was generated somewhere else). But it has to be done manually and is not very convenient to use on frequent basis.

The idea is:

  1. Run your PHPUnit tests on remote machine and generate coverage.xml.
  2. Process it using any suitable tool to replace remote paths by local path (e.g. some custom Phing target; simple find+replace in your text editor or whatever). That's, of course, if remote paths differ from local. Otherwise just skip it.
  3. Tell IDE to use this file to display coverage details via Tools | Show Code Coverage Data -- attach required file there.
    Please note: most likely (have not used this myself for a long time, so possibly it has been changed since then) you will have to remove and then add again such file every time you get new coverage.xml (that's the biggest annoyance) -- IDE caches content of such file. Check this ticket for some details.
Vielen Dank, ich habe es in PHPStorm 5 ausprobiert und es hat nicht funktioniert. Ich werde es in PHPStorm 6 versuchen vor 11 Jahren 0
Ich habe dies verwendet, als diese Funktionalität gerade in PhpStorm (Version 4 oder 5) eingeführt wurde und die integrierte Abdeckung nicht richtig funktionierte (aufgrund eines bestimmten Fehlers bei den Dateispeicherorten). Der einzige Unterschied zu dem, was ich zuvor gemacht habe, sind die Dateipfade. LazyOne vor 11 Jahren 0
Ich habe es gerade ausprobiert: Wenn ich phpunit außerhalb der IDE (von der Kommandozeile) aus laufe und dort die cover.xml-Datei generiere, kann ich es mit der 3. Stufe ohne Probleme an die IDE anhängen. ** Möglicherweise ** funktioniert es für Sie (wenn Sie korrekte Pfade haben) .. aber die Standardabdeckungsfarben sind zu blass / hell und Sie können sie einfach nicht sehen? (standardmäßig wird nur ein kleiner Bereich in der Editor-Rinne hervorgehoben) LazyOne vor 11 Jahren 1
Bam. Arbeitet. Keine Ahnung, was beim ersten Versuch schief gelaufen ist, ausgezeichnet, vielen Dank! nico gawenda vor 11 Jahren 0
1
Michael Butler

Update: Zumindest ab PHPStorm 2016.1 oder möglicherweise früher (z. B. Version 9 oder 10) können Sie PHPUnit-Code automatisch abrufen, indem Sie PHPUnit über den SSH-Server verwenden. Sie müssen zunächst einen Remote-PHP-Interpreter hinzufügen. Befolgen Sie dazu die Schritte im offiziellen Handbuch. Dann wählen Sie dies einfach als Standardprojekt-PHP-Interpreter aus. Wenn Sie einen Test ausführen, können Sie auf "MyTest 'mit Coverage ausführen" klicken. Die Covering-Datei wird automatisch kopiert und über SSH geladen.

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