mirror of
https://github.com/moodle/moodle.git
synced 2025-02-25 04:23:22 +01:00
That custom printer was using some hacks to be able to intercept configuration switches, reflection and other tricks to be able to print the: To re-run: vendor/bin/phpunit --verbose "core_setuplib_testcase" lib/tests/setuplib_test.php line on every failed/exceptional/skipped test. After some internal discussion it was agreed that the normal phpunit output: 1) core_setuplib_testcase::test_localcachedir Time is lower that allowed start value Failed asserting that 1601976686 is equal to 1601976687 or is greater than 1601976687. /var/www/html/lib/phpunit/classes/advanced_testcase.php:446 /var/www/html/lib/tests/setuplib_test.php:170 /var/www/html/lib/phpunit/classes/advanced_testcase.php:80 has already all the information at hand about how to rerun a test: - vendor/bin/phpunit lib/tests/setuplib_test.php - vendor/bin/phpunit --filter core_setuplib_testcase::test_localcachedir - vendor/bin/phpunit --filter ::test_localcachedir - vendor/bin/phpunit --testsuite componentname_testsuite - vendor/bin/phpunit --config <<compoenent directory>> - use --cache-result to get failed tests rerun with ease. - ... So better, let's use standard phpunit output and done. Also, note that, with the upgrade to phpunit 8.5, the printer was not working correctly any more, causing some switches, like --verbose ... to be ignored. Sure it could have been fixed but, as commented above, no real need for all that "parapheranlia" to print the rerun information.
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