2015-10-22 15:16:40 +02:00
# Tea example
2013-11-01 19:51:50 +01:00
2020-05-22 09:14:54 +02:00
[![CI Status ](https://github.com/TYPO3-Documentation/tea/workflows/CI/badge.svg )](https://github.com/TYPO3-Documentation/tea/actions)
2020-10-04 15:46:37 +02:00
[![Gitlab CI Status ](https://gitlab.typo3.org/qa/example-extension/badges/master/pipeline.svg )](https://gitlab.typo3.org/qa/example-extension/-/pipelines)
2019-12-07 15:59:33 +01:00
[![Latest Stable Version ](https://poser.pugx.org/ttn/tea/v/stable.svg )](https://packagist.org/packages/ttn/tea)
[![Total Downloads ](https://poser.pugx.org/ttn/tea/downloads.svg )](https://packagist.org/packages/ttn/tea)
[![Latest Unstable Version ](https://poser.pugx.org/ttn/tea/v/unstable.svg )](https://packagist.org/packages/ttn/tea)
[![License ](https://poser.pugx.org/ttn/tea/license.svg )](https://packagist.org/packages/ttn/tea)
2016-02-08 19:10:41 +01:00
2017-12-23 00:58:20 +01:00
This TYPO3 extension is an example for writing unit and functional tests for
2019-08-12 15:54:29 +02:00
Extbase/Fluid-based extensions for TYPO3 CMS using PHPUnit.
2015-10-22 15:16:40 +02:00
2017-12-23 00:58:20 +01:00
It also is an example for
[best practices for extbase/fluid ](https://github.com/oliverklee/workshop-handouts/tree/master/extbase-best-practices ).
2015-10-24 01:16:37 +02:00
2017-05-05 18:00:40 +02:00
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) ](https://github.com/oliverklee/tdd-reader ).
2018-05-30 12:33:28 +02:00
## Running the unit tests from the command line
```bash
2019-12-07 17:30:02 +01:00
composer ci:tests:unit
2018-05-30 12:33:28 +02:00
```
2018-05-25 16:19:12 +02:00
## Running the tests in PhpStorm
File > Settings > Languages & Frameworks > PHP > Test Frameworks
- (*) Use Composer autoloader
2018-05-30 13:38:59 +02:00
- Path to script: select `.Build/vendor/autoload.php` in your project folder
2018-05-25 16:19:12 +02:00
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
2019-12-07 17:30:02 +01:00
- (*) Use alternative configuration file
2018-05-25 16:19:12 +02:00
- use `.Build/vendor/nimut/testing-framework/res/Configuration/UnitTests.xml`
in your project folder
2019-12-07 17:30:02 +01:00
- add the following environment variables:
2018-05-25 16:19:12 +02:00
- 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:
2018-05-25 16:51:31 +02:00
- Directory: use the `Tests/Functional` directory in your project
2019-12-07 17:30:02 +01:00
- (x) Use alternative configuration file
2018-05-25 16:19:12 +02:00
- use `.Build/vendor/nimut/testing-framework/res/Configuration/FunctionalTests.xml`
2018-05-31 23:48:38 +02:00
### 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 ](http://chromedriver.chromium.org/downloads )
4. unzip it
2018-06-01 10:58:34 +02:00
5. `chromedriver --url-base=wd/hub`
2018-06-01 10:20:36 +02:00
6. `.Build/vendor/bin/codecept run` (in another terminal)
2018-05-31 23:48:38 +02:00
#### In PhpStorm
1. make sure the "Codeception Framework" plugin is activated
2018-06-01 10:58:34 +02:00
2. right-click on `Tests/Acceptance/StarterCest.php`
2018-06-01 10:20:36 +02:00
3. Run 'Acceptance (Codeception)'
2018-05-31 23:48:38 +02:00
2018-01-24 13:21:06 +01:00
## Creating new extensions with automated tests
For creating new extensions, I recommend taking
[Helmut Hummel's extension skeleton ](https://github.com/helhum/ext_scaffold )
as a starting point.
2015-10-22 15:16:40 +02:00
## More Documentation
* [Handout to my workshops on test-driven development (TDD) ](https://github.com/oliverklee/tdd-reader )
2017-12-23 00:58:20 +01:00
* [Handout for best practices with extbase and fluid ](https://github.com/oliverklee/workshop-handouts/blob/master/extbase-best-practices/extbase-best-practices.pdf )
2015-10-22 15:16:40 +02:00
## Other example projects
* [Selenium demo ](https://github.com/oliverklee/selenium-demo )
for using Selenium with PHPUnit
* [Anagram finder ](https://github.com/oliverklee/anagram-finder )
is the finished result of a code kata for TDD
* [Coffee example ](https://github.com/oliverklee/coffee )
2017-04-10 20:05:40 +02:00
is my starting point for demonstrating TDD with TYPO3 CMS
* [TDD Seed ](https://github.com/oliverklee/tdd-seed )
for starting PHPUnit projects with Composer (without TYPO3 CMS)