oliverklee / tea
TYPO3 example extension for unit testing and best practices
Installs: 32
Dependents: 0
Suggesters: 0
Security: 0
Stars: 24
Watchers: 6
Forks: 3
Type:typo3-cms-extension
Requires
- php: ~7.0.0 || ~7.1.0 || ~7.2.0
- typo3/cms-core: ^7.6.23 || ^8.7.10
- typo3/cms-fluid: ^7.6.23 || ^8.7.10
- typo3/cms-frontend: ^7.6.23 || ^8.7.10
Requires (Dev)
- codeception/codeception: ^2.4
- helhum/typo3-composer-setup: ^0.5.1
- helmich/typo3-typoscript-lint: ^1.4.4
- nimut/testing-framework: ^3.0
- roave/security-advisories: dev-master
- typo3/cms-fluid-styled-content: ^7.6.23 || ^8.7.10
Conflicts
- typo3/cms-composer-installers: <1.4.6
Replaces
- tea: v2.0.0
- typo3-ter/tea: v2.0.0
README
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
- make sure you have Chrome installed on your machine
composer update codeception/codeception
(just in case)- download the latest version of ChromeDriver
- unzip it
chromedriver --url-base=wd/hub
.Build/vendor/bin/codecept run
(in another terminal)
In PhpStorm
- make sure the "Codeception Framework" plugin is activated
- right-click on
Tests/Acceptance/StarterCest.php
- 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
- Handout to my workshops on test-driven development (TDD)
- Handout for best practices with extbase and fluid
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)