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






Хорошо, глядя на документы, которые должны быть в первую очередь,
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>, документы не были конкретными.
Да, поэтому я и упомянул об этом. Но теоретически у вас могут быть группы, которые объединяют или являются частью двух наборов тестов, поэтому имеет смысл делать это таким образом.
Использование <groups> внутри <testsuite> не поддерживается. Я просто попробовал, но ничего не вышло. Он покажет эту ошибку: Element 'groups': This element is not expected. Expected is one of ( directory, file, exclude ).
В моем случае я сгруппировал как data
<?php
namespace Tests\Unit\Artefact;
use Tests\TestCase;
/**
* @group data
*/
class DataMovieTest extends TestCase
{
}
а затем запустите phpunit с терминала, например
phpunit --exclude data
Я просто делаю это через командную строку, но всегда даю своим тестам группу, которая является именем класса, и группу, которая является именем метода. Таким образом, если я хочу сосредоточиться на классе, я могу запустить эту группу, а если я хочу сосредоточиться на методе, я могу запустить эту группу.