Available from version 1.17.0 (r68673, codereview)
Allows extensions to extend core's PHPUnit test suite
Define function:
public static function onUnitTestsList( array &$paths ) { ... }
Attach hook: In extension.json:
	"Hooks": {
		"UnitTestsList": "MyExtensionHooks::onUnitTestsList"
Called from: File(s): ../tests/phpunit/suites/ExtensionsTestSuite.php
Interface: UnitTestsListHook.php

For more information about attaching hooks, see Manual:Hooks .
For examples of extensions using this hook, see Category:UnitTestsList extensions.

UnitTestsList allows registration of additional test suites to execute under PHPUnit. Extensions can append paths to files to the $paths array, and since MediaWiki 1.24, can specify paths to directories, which will be scanned recursively for any test case files with the suffix "Test.php".

Registering your tests edit

As of MediaWiki 1.28 (Gerrit change 302944), you no longer need to register your tests with the UnitTestsList hook as long as they are in the tests/phpunit/ directory of your extension - they will automatically be registered.

Let's assume our extension is named Fruits.

  1. Create a hook function for onUnitTestsList.
  2. Register the hook with UnitTestsList.
--- Fruits/Fruits.hooks.php

@@ class FruitsHooks {

  public static function onUnitTestsList( &$paths ) {
    $paths[] = __DIR__ . '/tests/phpunit/';
    return true;

--- Fruits/Fruits.php

// Register hooks
$wgHooks['UnitTestsList'][] = 'FruitsHooks::onUnitTestsList';

See also edit