moodle/lib/phpunit
Petr Skoda 2e123e7120 MDL-45287 fix behat database reset between scenarios
We cannot find out if DB received any writes because behat
web access runs in different request.

This was affecting only scenarios without generators.
2014-04-28 17:13:29 +08:00
..
classes MDL-45287 fix behat database reset between scenarios 2014-04-28 17:13:29 +08:00
tests MDL-41935 attempt to work around random time comparison test failures 2013-10-12 15:53:25 +02:00
bootstrap.php MDL-39474 introduce $CFG->debugdeveloper and cleanup $CFG init 2013-08-12 13:01:47 +02:00
bootstraplib.php MDL-38589 improve missing PHPUnit library hint 2013-03-22 22:47:08 +01:00
generatorlib.php MDL-37457 testing Mark current classes as deprecated 2013-01-15 11:07:45 +08:00
lib.php MDL-41196 Unit Tests: Add a phpmailer message sink 2013-08-15 13:58:51 +01:00
phpunit.xsd MDL-32323 add schema for phpunit.xml configuration file 2012-04-10 15:27:01 +02:00
readme.md MDL-36936 require phpunit as composer --dev only 2012-12-07 18:20:03 +01:00

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.

  1. install Composer - http://getcomposer.org/doc/00-intro.md
  2. go to your moodle dirroot and execute php composer.phar install --dev

PEAR is a framework and distribution system for reusable PHP components. The packages installed via PEAR are available in all PHP projects.

  1. install PEAR package manager - see PEAR Manual
  2. install PHPUnit package and phpunit/DbUnit extension - see PHPUnit installation documentation
  3. edit main config.php - add $CFG->phpunit_prefix and $CFG->phpunit_dataroot - see config-dist.php
  4. execute php admin/tool/phpunit/cli/init.php to initialise the test environment, repeat it after every upgrade or installation of plugins

Test execution

  • execute vendor/bin/phpunit (or phpunit if 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?

  1. create tests directory in your plugin
  2. add local/mytest/tests/my_test.php file with local_my_testcase class that extends basic_testcase or advanced_testcase
  3. add some test_*() methods
  4. execute your new test case phpunit local_my_testcase local/mytest/tests/my_test.php
  5. execute php admin/tool/phpunit/cli/init.php to get the plugin tests included in main phpunit.xml configuration file

How to convert existing tests?

  1. create new test file in xxx/tests/yyy_test.php
  2. copy contents of the old test file
  3. replace extends UnitTestCase with extends basic_testcase
  4. fix setUp(), tearDown(), asserts, etc.