2012-03-21 10:31:37 +01:00
PHPUnit testing support in Moodle
==================================
2012-04-03 23:08:25 +02:00
Documentation
-------------
2013-12-30 15:02:55 +08:00
* [Moodle PHPUnit integration ](http://docs.moodle.org/dev/PHPUnit )
2012-11-22 07:28:59 +01:00
* [PHPUnit online documentation ](http://www.phpunit.de/manual/current/en/ )
* [Composer dependency manager ](http://getcomposer.org/ )
2012-04-03 23:08:25 +02:00
2012-11-22 07:28:59 +01:00
Composer installation
---------------------
2013-12-30 15:02:55 +08:00
Composer is a dependency manager for PHP projects.
2012-11-22 07:28:59 +01:00
It installs PHP libraries into /vendor/ subdirectory inside your moodle dirroot.
2013-12-30 15:02:55 +08:00
1. install Composer - [http://getcomposer.org/doc/00-intro.md ](http://getcomposer.org/doc/00-intro.md )
2015-04-14 11:23:05 +08:00
2. install PHUnit and dependencies - go to your Moodle dirroot and execute `php composer.phar install`
2012-11-22 07:28:59 +01:00
2013-12-30 15:02:55 +08:00
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.
2012-11-22 07:28:59 +01:00
2013-12-30 15:02:55 +08:00
* execute `php admin/tool/phpunit/cli/init.php`
2012-03-21 10:31:37 +01:00
2013-12-30 15:02:55 +08:00
Execute tests
2012-03-21 10:31:37 +01:00
--------------
2013-12-30 15:02:55 +08:00
* execute `vendor/bin/phpunit` from dirroot directory
2012-11-22 07:28:59 +01:00
* 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`
2012-03-21 10:31:37 +01:00
2012-04-03 23:08:25 +02:00
How to add more tests?
----------------------
2013-12-30 15:02:55 +08:00
1. create `tests/` directory in your add-on
2. add test file, for example `local/mytest/tests/my_test.php` file with `local_my_testcase` class that extends `basic_testcase` or `advanced_testcase`
2012-04-10 13:03:02 +02:00
3. add some test_*() methods
2013-12-30 15:02:55 +08:00
4. execute your new test case `vendor/bin/phpunit local_my_testcase local/mytest/tests/my_test.php`
2012-04-13 12:45:18 +02:00
5. execute `php admin/tool/phpunit/cli/init.php` to get the plugin tests included in main phpunit.xml configuration file
2012-03-21 10:31:37 +01:00
2013-12-30 15:02:55 +08:00
Windows support
---------------
2015-04-14 11:23:05 +08:00
* use `\` instead of `/` in paths in examples above