Skip to content
TYPO3 example extension for unit testing and best practices.
PHP HTML
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Classes [CLEANUP] Fix code inspection warnings (#57) Aug 12, 2019
Configuration [TASK] Drop the example PHPUnit configuration file (#29) May 31, 2018
Resources [FEATURE] Tea single view (#26) May 28, 2018
Tests [CLEANUP] Fix code inspection warnings (#57) Aug 12, 2019
.gitignore [FEATURE] Add PHP-CS-Fixer (#53) Aug 12, 2019
.php_cs.dist
.travis.yml [TASK] Stop building with the lowest Composer dependencies (#55) Aug 12, 2019
CHANGELOG.md [CLEANUP] Fix code inspection warnings (#57) Aug 12, 2019
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Jan 24, 2018
LICENSE [TASK] Change from GPL V3+ to GPL V2+ (#40) Aug 8, 2019
README.md [TASK] Drop support for TYPO3 < 9.5 (#50) Aug 12, 2019
codeception.yml [FEATURE] Example acceptance tests with Codeception (#31) May 31, 2018
composer.json [TASK] Upgrade PHPUnit to 7.5.14 (#52) Aug 12, 2019
ext_emconf.php [FEATURE] Add support for PHP 7.3 (#51) Aug 12, 2019
ext_localconf.php [FEATURE] Tea single view (#26) May 28, 2018
ext_tables.sql
phpcs.xml.dist [FEATURE] Add PHP_CodeSniffer to the Travis CI build (#44) Aug 12, 2019

README.md

Tea example

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

This TYPO3 extension is an example for writing unit and functional tests for Extbase/Fluid-based extensions for TYPO3 CMS using PHPUnit.

It also is an example for best practices for extbase/fluid.

For information on the different ways to execute the tests, please have a look at the handout to my workshops on test-driven development (TDD).

Running the unit tests from the command line

.Build/bin/phpunit -c .Build/vendor/nimut/testing-framework/res/Configuration/UnitTests.xml Tests/Unit/

Running the tests in PhpStorm

General PHPUnit setup

composer require typo3/cms ^9.5
composer install
git checkout HEAD -- composer.json

File > Settings > Languages & Frameworks > PHP > Test Frameworks

  • (*) Use Composer autoloader
  • Path to script: select .Build/vendor/autoload.php in your project folder

In the Run configurations, edit the PHPUnit configuration and use these settings so this configuration can serve as a template:

  • Directory: use the Tests/Unit directory in your project
  • Use alternative configuration file
  • use .Build/vendor/nimut/testing-framework/res/Configuration/UnitTests.xml in your project folder
  • Add the following environment variables:
    • typo3DatabaseUsername
    • typo3DatabasePassword
    • typo3DatabaseHost
    • typo3DatabaseName

Unit tests configuration

In the Run configurations, copy the PHPUnit configuration and use these settings:

  • Directory: use the Tests/Unit directory in your project

Functional tests configuration

In the Run configurations, copy the PHPUnit configuration and use these settings:

  • Directory: use the Tests/Functional directory in your project
  • Use alternative configuration file
  • use .Build/vendor/nimut/testing-framework/res/Configuration/FunctionalTests.xml

Running the acceptance tests

On the command line

  1. make sure you have Chrome installed on your machine
  2. composer update codeception/codeception (just in case)
  3. download the latest version of ChromeDriver
  4. unzip it
  5. chromedriver --url-base=wd/hub
  6. .Build/vendor/bin/codecept run (in another terminal)

In PhpStorm

  1. make sure the "Codeception Framework" plugin is activated
  2. right-click on Tests/Acceptance/StarterCest.php
  3. Run 'Acceptance (Codeception)'

Creating new extensions with automated tests

For creating new extensions, I recommend taking Helmut Hummel's extension skeleton as a starting point.

About me (Oliver Klee)

I am the maintainer of the PHPUnit TYPO3 extension, which is available in the TYPO3 extension repository (TER).

You can book me for workshops at your company.

I also frequently give workshops at the TYPO3 Developer Days.

More Documentation

Other example projects

  • Selenium demo for using Selenium with PHPUnit
  • Anagram finder is the finished result of a code kata for TDD
  • Coffee example is my starting point for demonstrating TDD with TYPO3 CMS
  • TDD Seed for starting PHPUnit projects with Composer (without TYPO3 CMS)
You can’t perform that action at this time.