2016-06-14 3 views
8

В моем конфигурационном файле PHPUnit есть два набора тестов: unit и system. Когда я запускаю тестовый бегун vendor/bin/phpunit, он запускает все тесты в обоих наборах. Я могу настроить таргетинг на один набор с флагом testsuite: vendor/bin/phpunit --testsuite unit, но мне нужно настроить тестовый бегун для запуска только набора unit по умолчанию, а для запуска integration только при специальном вызове с флажком testuite.Запуск одного теста по умолчанию в PHPUnit

Моя конфигурация:

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit colors="true"> 
    <testsuites> 
    <testsuite name="unit"> 
     <directory>tests/Unit</directory> 
    </testsuite> 
    <testsuite name="integration"> 
     <directory>tests/Integration</directory> 
    </testsuite> 
    </testsuites> 
    <filter> 
    <whitelist> 
     <directory suffix=".php">src</directory> 
    </whitelist> 
    </filter> 
    <logging> 
    <log type="coverage-clover" target="build/clover.xml"/> 
    </logging> 
</phpunit> 
+0

Не лучше создавать файлы 'phpunit_unit.sh' и' phpunit_integration.sh', с конфигурациями внутри? –

ответ

1

Там не кажется, способ перечислить несколько из тесты во файла phpunit.xml, но работать только один. Однако, если у вас есть некоторый контроль над более полной интеграционной и тестовой средой, где вы можете более точно настроить настройки, у вас может быть более одного файла конфигурации phpunit и установить один (или более) с более задействованными средами для установки командной строки параметр --configuration <file> вариант с конфигурацией, которая будет делать больше. Это, по крайней мере, гарантирует, что простейшая конфигурация будет работать самым простым способом.

Эти два файла можно назвать любыми, как вам нравится, если вы их запускаете специально, но может быть стоит подумать о том, что файл с быстрым запуском называется по умолчанию phpunit.xml, а конкретно названный и расширенный файл - phpunit.xml.dist. Файл .dist будет автоматически запускаться по умолчанию, если исходный простой .xml не существует. Другой вариант - иметь файл phpunit.xml.dist в репозитории кода, но затем скопировать его в файл phpunit.xml с меньшим количеством «testuite», который сам по себе не проверяется в управлении версиями и хранится только локально. (вероятно, он также будет отмечен как проигнорированный в файле .gitignore или аналогичный).

+1

PHPUnit (начиная с версии 6.1.0) теперь поддерживает определение testuite по умолчанию, поэтому это обходное решение больше не требуется. – GaryJ

+0

@GaryJ: ссылка (по крайней мере) на то, где это происходит, будет действительно гипертекстовой. Но большое спасибо за комментарий и номер версии :)/E: Ooops, просто увидев, что у вас есть это в вашем [ниже] (https://stackoverflow.com/a/45446071/367456) – hakre

4

С PHPUnit 6.1.0 в настоящее время поддерживается атрибут defaultTestSuite.

См https://github.com/sebastianbergmann/phpunit/pull/2533

Это может быть использован среди других phpunit атрибутов, например, так:

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.2/phpunit.xsd" 
     backupGlobals="false" 
     backupStaticAttributes="false" 
     bootstrap="tests/bootstrap.php" 
     colors="true" 
     convertErrorsToExceptions="true" 
     convertNoticesToExceptions="true" 
     convertWarningsToExceptions="true" 
     defaultTestSuite="unit" 
     processIsolation="false" 
     stopOnFailure="false"> 
    <testsuites> 
     <testsuite name="unit"> 
      <directory suffix="Test.php">tests/Unit</directory> 
     </testsuite> 
     <testsuite name="integration"> 
      <directory suffix="Test.php">tests/Integration</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

Теперь вы можете запустить phpunit вместо phpunit --testusite unit.

Имя testuite вполне может быть чувствительным к регистру, поэтому следите за этим.

+0

Хорошее улучшение, которое нужно знать около. Спасибо за сообщение! – hakre

Смежные вопросы