Уже неделю играю с phpUnit.
Я медленно продвигаюсь с документацией по адресу:
На данный момент я нахожусь на покрытии кода. Мне удалось сгенерировать небольшой тест --coverage-html (через консоль). Я хочу, чтобы все работало через phpStorm.
Я борюсь с путями включения. Я вижу ошибки в консоли, но они совершенно бесполезны.
Вот как выглядит мой вывод на консоль:
Это единственное место, где я использую этот файл в
Так выглядит структура папок для тестируемого и отображаемого (в консоли) файла
|- dir:Boostrap
|- dir:Coverage
|- dir:Database
|- dir:Interfaces
|- dir:Methods
|---- file: BasicCalculations.php (line 3 inclusion)
|- dir:Tests
|---- file:DataDisplayingTest.php (file that I'm testing)
|---- dir:Data Providers
|-------- file:BasicCalculationDataProvider.php (line 4 inclusion)
Что я пробовал / Что сделал до сих пор
Набор тестов PHPUnit включает путь - это натолкнуло меня на мысль поиграть с файлом начальной загрузки, в который я включил все необходимые файлы, но опять же, это работало только с помощью ручного запуска тестов в консоли - я хочу, чтобы он работал в phpStorm удаленно.
Белый и черный список PHPUnit игнорируются. На данный момент ситуация выглядит так
без processUncoveredFilesFromWhitelist = "true" у меня нет ошибки включения, но после этого у меня было только больше ошибок:
Похоже, он пытается работать, поскольку консоль на мгновение становится зеленой, и теперь у меня есть панель покрытия, но я уверен, что этих ошибок там не должно быть. Я не могу быть уверен, правильно ли отображается отчет о покрытии.
Ошибка PHPUnit «Не удалось открыть поток: нет такого файла или каталога» - Я пробовал DIR, как видите,
Вот как выглядит мой phpunit.xml:
<?xml version = "1.0" encoding = "UTF-8"?>
<phpunit xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation = "phpunit.xsd"
cacheResult = "true"
verbose = "true">
<filter>
<whitelist processUncoveredFilesFromWhitelist = "true">
<directory>/var/www/html/phpUnit</directory>
</whitelist>
</filter>
<php>
<includePath>/var/www/html/phpUnit</includePath>
</php>
</phpunit>
Я поигрался с каталогом /cluedPath, пробовал такие варианты, как:
- /var/www/html/phpUnit
- /var/www/html/phpUnit/
- .
- ./
- <file>pointed/tested/file/here/</file>
Я работаю с:
Чтобы быть более ясным:
Привет, взгляните на эту конкретную документацию о том, как настроить PHPStorm и PHPUnit. jetbrains.com/help/phpstorm/enables-php-unit-support.html
Привет, Спасибо за ответ. Мне удалось все исправить, и, что удивительно, это были не проблемы с phpStorm - напишу все в свободное время.





Мне удалось решить все проблемы, которые у меня были. Я использовал некоторую информацию, предоставленную по ссылкам, указанным выше.
Прежде всего
Включить ошибки
PhpUnit xml использует директиву includePath, которая в моем случае выглядела так:
<php>
<includePath>/var/www/html/phpUnit</includePath>
</php>
Как правило, на этом этапе проблема связана с… существованием includePath в файле xml. Этот атрибут изменяет путь включения.
Допустим, у вас есть такая структура проекта:
- dir: Classes
–- dir: A
–-- file: A.php class: A (extends B)
–- dir: B
–-- file: B.pphp class: B
-file: index.php
Итак, судя по виду файла A.php, вам нужно будет включить B.php следующим образом: ../B/B.php
Поскольку рабочий каталог
/var/www/html/phpUnit/Classes/
Но теперь, поскольку вы настроили путь включения к:
var/www/html/phpUnit
Файл A пытается загрузить файл B с точки зрения папки phpUnit, и он вроде как ищет файл в:
var/www/html
Отсутствие этой директивы не решает проблему, поскольку phpUnit, похоже, использует другой путь по умолчанию.
Я решил эту проблему, изменив способ включения файлов в проект:
Просто вместо этого используйте:
include_once '../Interfaces/BasicCalculationsInterface.php';
Я начал это так:
include_once __DIR__.'/../Interfaces/BasicCalculationsInterface.php';
Сюда:
Запись файла index.html запрещена
Я тоже наткнулся на эту проблему. На самом деле это своего рода проблема с phpStorm, которую я не знаю, как решить постоянно, но я решил ее для файла xml, из которого я могу запускать все свои тесты.
По сути, phpStorm добавил некоторые конфигурации по умолчанию для выполняемых тестов.
В меню перейдите в
Запуск / изменение конфигураций
Взгляните на поле Параметры Test Runner.
В моем случае добавлен phpStorm
--coverage-html /
Все было бы хорошо, но я использую Ubuntu на ноутбуке в качестве удаленного хоста, и phpStorm пытается таким способом создавать файлы в каталоге /, для которых нет разрешения на запись. Изменение этого файла на какую-нибудь записываемую папку или удаление этой строки решило проблему.
Вот и все, вот так мой xml-файл выглядит на данный момент (на случай, если кому-то захочется что-нибудь посмотреть)
<?xml version = "1.0" encoding = "UTF-8"?>
<phpunit xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation = "phpunit.xsd"
verbose = "true">
<filter>
<whitelist addUncoveredFilesFromWhitelist = "false">
<directory suffix = ".php">/var/www/html/phpUnit</directory>
</whitelist>
</filter>
<logging>
<log type = "coverage-clover" target = "/var/www/html/phpunit/coverage.xml" lowUpperBound = "35" highLowerBound = "70"/>
<log type = "coverage-html" target = "/var/www/html/phpUnit/phpStormCoverageTest" lowUpperBound = "35"
highLowerBound = "70"/>
</logging>
<testsuites>
<testsuite name = "allTests">
<directory suffix = "Test.php">/var/www/html/phpUnit/Tests</directory>
</testsuite>
</testsuites>
</phpunit>
Предварительный просмотр рабочего покрытия html / phpStorm
Спасибо, что поделился
Я думаю, что добился некоторого прогресса с: это. Это:
<whitelist addUncoveredFilesFromWhitelist = "false">, похоже, удаляет все ошибки в последней строке и даже покрывает процент покрытого кода. Скорее всего завтра буду тестировать.