Funktioniert PHPUnit_Selenium Code Coverage?

In den PHPUnit-Dokumenten, heißt es, dass es möglich ist, Code-Coverage-Daten zu erhalten:

PHPUnit_Extensions_SeleniumTestCase kann Code-Coverage-Informationen für Tests sammeln, die über Selenium ausgeführt werden:

Kopieren Sie PHPUnit / Extensions / SeleniumTestCase / phpunit_coverage.php in das Stammverzeichnis Ihres Webservers.

Konfigurieren Sie in der Konfigurationsdatei php.ini Ihres Webservers PHPUnit / Extensions / SeleniumTestCase / prepend.php und PHPUnit / Extensions / SeleniumTestCase / append.php als auto_prepend_file bzw. auto_append_file.

Verwenden Sie in Ihrer Testfallklasse, die PHPUnit_Extensions_SeleniumTestCase erweitert, protected $ coverageScriptUrl = 'http: //host/phpunit_coverage.php'; um die URL für das Skript phpunit_coverage.php zu konfigurieren.

Es ist mir nicht gelungen, Informationen zur Abdeckung auszugeben. Ich bin in der Lage, Informationen zur Codeabdeckung durch normale Einheitentests zu erhalten.

Für meine App läuft beihttp://localhost/ts2_templates/ Ich habe kopiertphpunit_coverage.php zuhttp://localhost/phpunit_coverage.php.

Ich habe die folgende php.ini hinzugefügt:

auto_prepend_file = "/path/to/pear/share/pear/PHPUnit/Extensions/SeleniumTestCase/prepend.php"
auto_append_file = "/path/to/pear/share/pear/PHPUnit/Extensions/SeleniumTestCase/append.php"

... und überprüft, dass sie mit einem angerufen werdendie("yep it's me");.

Schließlich habe ich meinem Testfall Folgendes hinzugefügt:

<?php

class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
    # added line below
    protected $coverageScriptUrl = 'http://localhost/phpunit_coverage.php';

    protected function setUp()
    {
        $this->setBrowser('firefox');
        $this->setBrowserUrl('http://localhost/ts2_templates');
    }

    public function testTitle()
    {
        $this->url('http://localhost/ts2_templates');
        $this->assertContains('test', $this->title());
    }
}

?>

Hier ist der Befehl zum Ausführen des von PHPStorm generierten Tests mit Codeabdeckung:

/Applications/MAMP/bin/php5.3/bin/php -dxdebug.coverage_enable=1 /private/var/folders/pp/0t4y41f95j5313qm_f8b42fw0000gn/T/ide-phpunit.php --coverage-clover /path/to/coverage/ts2_templates$WebTest.coverage --no-configuration WebTest /Users/Ian/php/ts2_templates/tests/WebTest.php

Hier ist die Ausgabe der Coverage XML-Datei:

<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1341015508">
    <project timestamp="1341015508">
        <metrics files="0" loc="0" ncloc="0" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </project>
</coverage>

Der Test selbst besteht.

Ich habe überprüft, dass es nirgendwo im Code Exit- oder Die-Anweisungen gibt.

Irgendwelche Ideen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage