2e123e7120
We cannot find out if DB received any writes because behat web access runs in different request. This was affecting only scenarios without generators.
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.