mirror of
https://github.com/moodle/moodle.git
synced 2025-03-31 05:52:51 +02:00
Custom autoloaders are deprecated with PHPUnit 9 and will be removed with PHPUnit 10. Since PHPUnit 8.5 custom autoloaders don't do much because that version removed the ability to launch unit tests by class name and that's exactly the reason we had a custom autoloader (to map class names to files within our tests). See MDL-67673 about when direct use of classes was deprecated (8.5), now removed (9.5). So, as far as it's unused, removing it now, test still can be selectively using any of: - a relative path to file (although there are some restrictions comming with PHPUnit 9, see https://github.com/sebastianbergmann/phpunit/issues/4105 - using --filter, to point to any classname[::method] - using --testsuite to run a complete suite - using --config to point to custom components. Also, commented out the lib/ajax/tests directory because it doesn't exist / is empty and PHPUnit 9 emits error when a configured test directory does not exist. See https://github.com/sebastianbergmann/phpunit/issues/4493. Alternative was to completely remove the configuration line, but decided to keep it around in case some day we want to add some test there.
PHPUnit testing support in Moodle
Documentation
Composer installation
Composer is a 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
- install PHUnit and dependencies - go to your Moodle dirroot and execute
php composer.phar install
Configure your server
You need to create a new dataroot directory and specify a separate database prefix for the test environment, see config-dist.php for more information.
- add
$CFG->phpunit_prefix = 'phpu_';
to your config.php file - and
$CFG->phpunit_dataroot = '/path/to/phpunitdataroot';
to your config.php file
Initialise the test environment
Before first execution and after every upgrade the PHPUnit test environment needs to be initialised, this command also builds the phpunit.xml configuration files.
- execute
php admin/tool/phpunit/cli/init.php
Execute tests
- execute
vendor/bin/phpunit
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
tests/
directory in your add-on - add test file, for example
local/mytest/tests/my_test.php
file withlocal_my_testcase
class that extendsbasic_testcase
oradvanced_testcase
- add some test_*() methods
- execute your new test case
vendor/bin/phpunit local_my_testcase local/mytest/tests/my_test.php
- execute
php admin/tool/phpunit/cli/init.php
to get the plugin tests included in main phpunit.xml configuration file
Windows support
- use
\
instead of/
in paths in examples above