DrupalCon Dublin 2016: Automated Testing: PHPUnit all the way

This core conversation will provide some insights into Drupal core’s testing strategies, what works well and what we are in the process of improving. One major effort is to convert our whole test code and infrastructure to use PHPUnit and to deprecate SimpleTest. This session is targeted at core and contrib developers alike, since the same testing knowledge can be applied to contributed modules as well. We expect that you have worked on a test case at least once, but will explain PHPUnit and concepts otherwise.

We will talk about:

Different types of tests: unit tests vs. integration tests vs. functional tests vs behavioral tests vs. white box tests vs. black box tests

The case for PHPUnit and why we move away from SimpleTest

Explaining test flavors in Drupal: Unit tests, Kernel tests, Browser tests, Javascript Browser tests

Converting SimpleTests to Browser tests

Assertions: checking the outcome of your scenario

Strict assertions in PHPUnit vs. lax assertions in SimpleTest

Mocking in unit tests: advantages of using the Prophecy framework (part of PHPUnit)

Test fixtures and the @dataProvider annotation concept of PHPUnit

Test predictability: Avoiding random data in tests

Test simplicity: avoiding complex logic in tests, hard code everything

Test abstractions: how much is too much?

t() calls and translations in tests

Testing exceptions: @expectedException annotations and why they are deprecated

Drupal is a registered trademark of Dries Buytaert.