mirror of https://github.com/FriendsOfTYPO3/tea.git synced 2024-09-19 23:36:13 +02:00
tea/README.md
2019-12-07 15:59:33 +01:00

115 lines
4.3 KiB
Markdown

# Tea example
[![Build Status](https://travis-ci.org/typo3-trainer-network/tea.svg?branch=master)](https://travis-ci.org/typo3-trainer-network/tea)
[![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)
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](https://github.com/oliverklee/workshop-handouts/tree/master/extbase-best-practices).
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).
## Running the unit tests from the command line
```bash
.Build/bin/phpunit -c .Build/vendor/nimut/testing-framework/res/Configuration/UnitTests.xml Tests/Unit/
```
## Running the tests in PhpStorm
### General PHPUnit setup
```bash
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
- [x] 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
- [x] 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](http://chromedriver.chromium.org/downloads)
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](https://github.com/helhum/ext_scaffold)
as a starting point.
## About me (Oliver Klee)
I am the maintainer of the
[PHPUnit TYPO3 extension](http://typo3.org/extensions/repository/view/phpunit),
which is available in the TYPO3 extension repository (TER).
You can book me for
[workshops](https://www.oliverklee.de/workshops/workshops.html)
at your company.
I also frequently give workshops at the TYPO3 Developer Days.
## More Documentation
* [Handout to my workshops on test-driven development (TDD)](https://github.com/oliverklee/tdd-reader)
* [Handout for best practices with extbase and fluid](https://github.com/oliverklee/workshop-handouts/blob/master/extbase-best-practices/extbase-best-practices.pdf)
## 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)
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)