PHPUnit testing support in Moodle
Documentation
Composer installation
Composer is a new dependency manager for PHP projects. It installs PHP libraries into /vendor/ subdirectory inside your moodle dirroot.
- install Composer - http://getcomposer.org/doc/00-intro.md
- go to your moodle dirroot and execute
php composer.phar install --dev
PEAR installation (not recommended)
PEAR is a framework and distribution system for reusable PHP components. The packages installed via PEAR are available in all PHP projects.
- install PEAR package manager - see PEAR Manual
- install PHPUnit package and phpunit/DbUnit extension - see PHPUnit installation documentation
- edit main config.php - add
$CFG->phpunit_prefixand$CFG->phpunit_dataroot- see config-dist.php - execute
php admin/tool/phpunit/cli/init.phpto initialise the test environment, repeat it after every upgrade or installation of plugins
Test execution
- execute
vendor/bin/phpunit(orphpunitif you use PEAR) from dirroot directory - you can execute a single test case class using class name followed by path to test file
vendor/bin/phpunit core_phpunit_basic_testcase lib/tests/phpunit_test.php - it is also possible to create custom configuration files in xml format and use
vendor/bin/phpunit -c mytestsuites.xml
How to add more tests?
- create
testsdirectory in your plugin - add
local/mytest/tests/my_test.phpfile withlocal_my_testcaseclass that extendsbasic_testcaseoradvanced_testcase - add some test_*() methods
- execute your new test case
phpunit local_my_testcase local/mytest/tests/my_test.php - execute
php admin/tool/phpunit/cli/init.phpto get the plugin tests included in main phpunit.xml configuration file
How to convert existing tests?
- create new test file in
xxx/tests/yyy_test.php - copy contents of the old test file
- replace
extends UnitTestCasewithextends basic_testcase - fix setUp(), tearDown(), asserts, etc.