GithubHelp home page GithubHelp logo

oliverklee / ext-tea Goto Github PK

View Code? Open in Web Editor NEW
24.0 8.0 3.0 236 KB

TYPO3 example extension for unit testing and best practices.

Home Page: https://www.oliverklee.de/workshops/

License: GNU General Public License v2.0

PHP 94.72% HTML 5.28%

ext-tea's Introduction

Tea example

This repository has moved to the TYPO3 Trainer Network.

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)

ext-tea's People

Contributors

dev-stefan avatar oliverklee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ext-tea's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.