Работает ли покрытие кода PHPUnit_Selenium?

В документации PHPUnit говорится, что можно получить покрытие кода данные:

PHPUnit_Extensions_SeleniumTestCase может собирать информацию о покрытии кода для тестов, запускаемых через Selenium:

  1. Скопируйте PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.php в корневой каталог документов вашего веб-сервера.

  2. В файле конфигурации php.ini вашего веб-сервера настройте PHPUnit/Extensions/SeleniumTestCase/prepend.php и PHPUnit/Extensions/SeleniumTestCase/append.php как auto_prepend_file и auto_append_file соответственно.

  3. В вашем классе тестового примера, который расширяет PHPUnit_Extensions_SeleniumTestCase, используйте protected $coverageScriptUrl = ‘https://host/phpunit_coverage.php’; чтобы настроить URL-адрес для скрипта phpunit_coverage.php.

Я не смог заставить это вывести какую-либо информацию о покрытии. Я могу получить информацию о покрытии кода с помощью обычных модульных тестов.

Для моего приложения, работающего в https://localhost/ts2_templates/, я скопировал phpunit_coverage.php в https://localhost/phpunit_coverage.php.

Я добавил в php.ini следующее:

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"

… и подтверждено, что они вызываются с помощью die("yep it's me");.

Наконец, я добавил следующее в свой тестовый пример:

<?php

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

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

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

?>

Вот команда для запуска теста с покрытием кода, сгенерированная PHPStorm:

/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

Вот результат XML-файла покрытия:

<?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>

Сам тест проходит.

Я проверил, что нигде в коде нет операторов выхода или смерти.

Любые идеи?

См. также:  GIT push в Azure DevOps работает из командной строки, но не из VS2017
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Ian

    Это определенно работает. Я настроил тесты селена в symfony, измеряя покрытие в соответствии с документацией.

    Самая большая проблема, с которой я столкнулся, заключалась в том, что данные о покрытии имели неправильный путь к файлам, и поэтому не могли сопоставить источники с данными о покрытии. Это потому, что я выполнял тесты из другого места, так как сервер хранил файлы. Поэтому я изменил append.php, чтобы переписать путь к тому месту, где находятся мои исходные файлы.

  2. Ian

    У меня также были некоторые проблемы с работой. Следующий сообщение в Мне помог форум YII Сэмюэля Гольдштейна:

    В итоге я переместил prepend.php и append.php в корень документа моего проекта.

    Я также обнаружил, что расположение временных файлов имело значение — изначально я пытался сохранить их в /tmp/, а PHP молча терпел неудачу. Когда я изменил $GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'] на myroot/protected/runtime/tmp и сделал chmod 777 в этом каталоге, он начал работать.

    Одна вещь, которая может вас немного расстроить, заключается в том, что код, выполняемый через Ajax, не помечается как защищенный.

    Похоже, это известная проблема с Selenium. Погуглите «github sebastianbergmann phpunit-selenium Issues» и найдите закрытую проблему #22 для Дополнительная информация.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: