Как включить / исключить определенные группы из набора тестов через phpunit.xml

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

Я попытался сделать что-то подобное, но похоже, что он игнорирует <groups> и / или <include>

<testsuites>
    <testsuite name = "Unit">
        <directory>Unit</directory>
    </testsuite>
    <testsuite name = "IntegrationFirstRound">
        <directory>Integration/</directory>
        <include><!-- I want to ONLY include this group -->
            <group>first-round</group>          
        </include>
    </testsuite>
    <testsuite name = "IntegrationOther">
        <directory>Integration/</directory>
        <exclude><!-- I want to EXCLUDE this group, run all others -->
            <group>first-round</group>
        </exclude>
    </testsuite>
</testsuites>

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

Я просто делаю это через командную строку, но всегда даю своим тестам группу, которая является именем класса, и группу, которая является именем метода. Таким образом, если я хочу сосредоточиться на классе, я могу запустить эту группу, а если я хочу сосредоточиться на методе, я могу запустить эту группу.

ArtisticPhoenix 13.03.2018 00:58

Спасибо за ваше предложение. Я думал об этом, это сработает, но с небольшими осложнениями по другой причине.

Sam Anthony 13.03.2018 01:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
7
2
3 840
2

Ответы 2

Хорошо, глядя на документы, которые должны быть в первую очередь,

https://phpunit.de/manual/current/en/appendixes.configuration.html

Вам нужен элемент groups с group внутри. Итак, где у вас

<exclude><!-- I want to EXCLUDE this group, run all others -->
     <group>first-round</group>
</exclude>

У вас должно быть

<groups>
    <exclude><!-- I want to EXCLUDE this group, run all others -->
        <group>first-round</group>
   </exclude>
</groups>

На самом деле это не говорит о том, что он должен входить в <testsuite>, и я никогда не использовал его, но я уверен, что если вы посмотрите в документации, вы найдете несколько примеров.

Спасибо за ответ. Я попробовал то, что вы предложили (в моем вопросе ошибка ввода). Я просмотрел документы и тоже экспериментировал. Возможно, это не поддерживается. Помещение <groups><exclude><group>... только внутри тега <phpunit> действительно работает, возможно, они не принадлежат тегу <testsuite>, документы не были конкретными.

Sam Anthony 13.03.2018 01:43

Да, поэтому я и упомянул об этом. Но теоретически у вас могут быть группы, которые объединяют или являются частью двух наборов тестов, поэтому имеет смысл делать это таким образом.

ArtisticPhoenix 13.03.2018 02:00

Использование <groups> внутри <testsuite> не поддерживается. Я просто попробовал, но ничего не вышло. Он покажет эту ошибку: Element 'groups': This element is not expected. Expected is one of ( directory, file, exclude ).

crabbly 18.10.2019 17:14

В моем случае я сгруппировал как data


<?php

namespace Tests\Unit\Artefact;

use Tests\TestCase;

/**
 * @group data
 */
class DataMovieTest extends TestCase
{

}

а затем запустите phpunit с терминала, например

phpunit --exclude data

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