Skip to content
Snippets Groups Projects

Phpunit

TODO: if (!defined('PHPUNIT_QFQ')) {...}

rewrite $phpUnit to: "if (!defined('PHPUNIT_QFQ')) {...}

Run unit tests from CLI:

Make sure dev dependencies are installed:

# in extension directory
composer update --dev

Run all tests:

# in extension directory
vendor/bin/phpunit --configuration phpunit.xml

Run single test:

# in extension directory
vendor/bin/phpunit --configuration phpunit.xml --filter <test_name>

Setup

Requirements for running the php unittests:

  • make bootstrap was executed
  • The following files exist at the same location (either extension/ or typo3conf/):
    • qfq.json
    • LocalConfiguration.php
  • The database credentials in qfq.json are correct
  • The database with the name DB_1_NAME followed by _phpunit exists. E.g. app_qfq_phpunit where DB_1_NAME=app_qfq

In Tests/Unit/ you may find a mockup of LocalConfiguration.php and a template for qfq.json.

Run unit tests from commandline

REMARK: Running the unit tests without specifying the configuration file phpunit.xml will not work. See section " Autoloader" for explanation.

From the extension folder run:

vendor/bin/phpunit --configuration phpunit.xml

Phpunit configurations

Phpunit configurations are stored in extension/phpunit.xml Running the tests without specifying these configurations will not work.

Autoloader

The test classes use the composer autoloader to reference to the source classes. The autoloader is loaded by phpunit before each test as specified in phpunit.xml by the line <phpunit bootstrap="vendor/autoload.php">

Run tests without typo3 installation (e.g. gitlab runner)

As defined in the phpunit command of projectRoot/Makefile.

The files phpunit_qfq.json and phpunit_LocalConfiguration.php are copied outside the extension folder by the Makefile.