Eloy Lafuente (stronk7) 0f3775088f
MDL-69688 phpunit: Improve test_context_not_used
This adds a few changes to the old test_context_not_used test:

- Move it to become an advanced_test, because its mission
  is to verify that the assertEventContextNotUsed() assertion
  works as expected.
- For consistency, also move the fixtures to own phpunit fixtures.
- Add proper coverage tags, to verify that the assertion is being
  covered.
- Add a data provider to provide all the current cases and ease
  any future case that may be needed in the future. One by one
  because previously there was code never executed with the
  warning expectation causing the test to stop.
- Run them in isolation, while this is not strictly required, it's
  including external fixtures and, we'll need that isolation soon
  (for changes coming when moving the test to PHPUnit 9.6 in MDL-81266).
2024-03-21 08:31:08 +01:00
..

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.

  1. install Composer - http://getcomposer.org/doc/00-intro.md
  2. 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 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 add-on
  2. add test file, for example local/mytest/tests/my_test.php file with my_test class that extends basic_testcase or advanced_testcase
  3. set the test class namespace to that of the class being tested
  4. add some test_*() methods
  5. execute your new test case vendor/bin/phpunit local/mytest/tests/my_test.php
  6. 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