Настройка phpStorm и XML для покрытия phpUnit 7 (удаленного)

Уже неделю играю с phpUnit.

Я медленно продвигаюсь с документацией по адресу:

На данный момент я нахожусь на покрытии кода. Мне удалось сгенерировать небольшой тест --coverage-html (через консоль). Я хочу, чтобы все работало через phpStorm.

Я борюсь с путями включения. Я вижу ошибки в консоли, но они совершенно бесполезны.

Вот как выглядит мой вывод на консоль:

Настройка phpStorm и XML для покрытия phpUnit 7 (удаленного)

Это единственное место, где я использую этот файл в

Настройка phpStorm и XML для покрытия phpUnit 7 (удаленного)

Так выглядит структура папок для тестируемого и отображаемого (в консоли) файла

|- 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 включает путь - это натолкнуло меня на мысль поиграть с файлом начальной загрузки, в который я включил все необходимые файлы, но опять же, это работало только с помощью ручного запуска тестов в консоли - я хочу, чтобы он работал в phpStorm удаленно.

Вот как выглядит мой 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 7.x удаленно
  • php 7.x удаленно
  • xdebug удаленно

Чтобы быть более ясным:

  • Что я делаю неправильно?
  • как я могу решить проблемы с включениями?
  • что вызывает все эти проблемы с путями включения?

Я думаю, что добился некоторого прогресса с: это. Это: <whitelist addUncoveredFilesFromWhitelist = "false">, похоже, удаляет все ошибки в последней строке и даже покрывает процент покрытого кода. Скорее всего завтра буду тестировать.

Volmarg Reiso 26.10.2018 06:43

Привет, взгляните на эту конкретную документацию о том, как настроить PHPStorm и PHPUnit. jetbrains.com/help/phpstorm/enables-php-unit-support.html

user3267053 26.10.2018 21:39

Привет, Спасибо за ответ. Мне удалось все исправить, и, что удивительно, это были не проблемы с phpStorm - напишу все в свободное время.

Volmarg Reiso 27.10.2018 19:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
485
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне удалось решить все проблемы, которые у меня были. Я использовал некоторую информацию, предоставленную по ссылкам, указанным выше.

Прежде всего

Включить ошибки

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';

Сюда:

  • Тесты отдельных файлов работают нормально
  • Сам проект работает нормально
  • phpStorm обнаруживает методы, классы и т. д. во включенном файле
  • Групповые тесты тоже работают хорошо

Запись файла 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

Спасибо, что поделился

user3267053 29.10.2018 13:29

Другие вопросы по теме