1

I am getting more and more into phpunit testing and have copied the core/phpunit.xml.dist file to core/phpunit.xml.

Exclude anything from core

I would like to exclude anything from the core, so phpunit has to find only my module's tests in modules/custom, but when I use vendor/bin/phpunit -c core --list-groups it still finds any module and test of the core.

Boost execution

Another problem I have is the execution of some very simple tests inside the test_example module with vendor/bin/phpunit -c core --group test_example takes ages.

How do I accelerate the test execution? Have I configured it wrongly?

This is the content of the phpunit.xml file.

<?xml version="1.0" encoding="UTF-8"?>

  <!-- TODO set checkForUnintentionallyCoveredCode="true" once https://www.drupal.org/node/2626832 is resolved. -->
  <!-- PHPUnit expects functional tests to be run with either a privileged user
   or your current system user. See core/tests/README.md and
   https://www.drupal.org/node/2116263 for details.
  -->
  <phpunit bootstrap="tests/bootstrap.php" colors="true"
           beStrictAboutTestsThatDoNotTestAnything="true"
           beStrictAboutOutputDuringTests="true"
           beStrictAboutChangesToGlobalState="true"
           checkForUnintentionallyCoveredCode="false">
  <!-- TODO set printerClass="\Drupal\Tests\Listeners\HtmlOutputPrinter" once
   https://youtrack.jetbrains.com/issue/WI-24808 is resolved. Drupal provides a
   result printer that links to the html output results for functional tests.
   Unfortunately, this breaks the output of PHPStorm's PHPUnit runner. However, if
   using the command line you can add
   - -printer="\Drupal\Tests\Listeners\HtmlOutputPrinter" to use it (note there
   should be no spaces between the hyphens).
  -->
    <php>
      <!-- Set error reporting to E_ALL. -->
      <ini name="error_reporting" value="32767"/>
      <!-- Do not limit the amount of memory tests take to run. -->
      <ini name="memory_limit" value="-1"/>
      <!-- Example SIMPLETEST_BASE_URL value: http://localhost -->
      <env name="SIMPLETEST_BASE_URL" value=""/>
      <!-- Example SIMPLETEST_DB value: mysql://username:password@localhost/databasename#table_prefix -->
      <env name="SIMPLETEST_DB" value=""/>
      <!-- Example BROWSERTEST_OUTPUT_DIRECTORY value: /path/to/webroot/sites/simpletest/browser_output -->
      <env name="BROWSERTEST_OUTPUT_DIRECTORY" value=""/>
    </php>
    <testsuites>
      <testsuite name="unit">
        <file>./tests/TestSuites/UnitTestSuite.php</file>
      </testsuite>
      <testsuite name="kernel">
        <file>./tests/TestSuites/KernelTestSuite.php</file>
      </testsuite>
      <testsuite name="functional">
        <file>./tests/TestSuites/FunctionalTestSuite.php</file>
      </testsuite>
      <testsuite name="functional-javascript">
        <file>./tests/TestSuites/FunctionalJavascriptTestSuite.php</file>
      </testsuite>
    </testsuites>
    <listeners>
      <listener class="\Drupal\Tests\Listeners\DrupalStandardsListener">
      </listener>
    </listeners>
    <!-- Filter for coverage reports. -->
    <filter>
      <whitelist>
        <directory>../modules/contrib</directory>
        <directory>../modules/custom</directory>
        <!-- By definition test classes have no tests. -->
        <exclude>
          <directory>./includes</directory>
          <directory>./lib</directory>
          <directory>./modules</directory>
          <directory>../sites</directory>
          <directory suffix="Test.php">./</directory>
          <directory suffix="TestBase.php">./</directory>
        </exclude>
       </whitelist>
    </filter>
  </phpunit>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.