39e2e9c41f
This should help with compatibility of future PHPUnit and it also allows us to improve test reset without breaking existing moodle test cases.
PHPUnit testing support in Moodle
Documentation
Installation
- install PEAR package manager - see PEAR Manual
- install PHPUnit package - see PHPUnit installation documentation
- edit main config.php - add
$CFG->phpunit_prefixand$CFG->phpunit_dataroot- see config-dist.php - execute
admin/tool/phpunit/cli/init.shto initialise the test environemnt, repeat it after every upgrade or installation of plugins
Test execution
- execute
phpunitfrom dirroot directory - you can execute a single test case class using class name followed by path to test file
phpunit core_phpunit_basic_testcase lib/tests/phpunit_test.php - it is also possible to create custom configuration files in xml format and use
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
admin/tool/phpunit/cli/init.shto 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.