Extension:MWUnit
MWUnit Release status: stable |
|
---|---|
File:MWUnit Logo.png | |
Implementation | Special page , Parser function , API , ContentHandler |
Description | A unit testing framework for MediaWiki |
Author(s) | Marijn van Wezel (Xxmarijnwtalk) |
Latest version | 2.0.1 (2021-12-04) |
Compatibility policy | Master maintains backward compatibility. |
MediaWiki | 1.31+ |
PHP | 7.0+ |
Database changes | Yes |
Tables | mwunit_tests mwunit_setup mwunit_teardown mwunit_content mwunit_attributes |
License | MIT License |
Download | GitHub:
<translate> Note:</translate> |
Expand | |
Expand | |
Expand | |
Expand | |
Expand | |
Quarterly downloads | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
Public wikis using | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
The MWUnit extension provides a unit testing framework for templates, parser functions and other wikitext.
It allows people that write technical templates to programmatically test those templates and changes to those templates. It ensures that a template, or section of a template, meets its design requirements and behaves exactly as intended.
MWUnit is an instance of the xUnit unit testing framework architecture.
The extension defines a number of assertions. These assertions are in the form of parser functions and test whether the given value conforms to the assertion. The most import assertions are:
#assert_equals
- tests whether the given strings are equal#assert_empty
- tests whether the given string is empty#assert_that
- tests whether the given string is true (a string is considered true, if and only if it is "true", "yes", "on" or "1")
The complete list of available assertions can be found here.
Click through the pages in the navigation bar at the top of this page to learn about MWUnit.
Example
Below is a basic example of a full test suite (Test:Foobar
). This example uses the Variables extension to show how fixtures and global state work.
<!-- Define a fixture -->
<setup>
<!-- Define some variables -->
{{#vardefine: bar | boofar }}
{{#vardefine: baz | {{Example}} }}
</setup>
<!-- Define a test case -->
<testcase name="testFoobar" group="Foobar tests" context="canonical">
<!-- Assert that the variable "bar" is equal to the string "boofar" -->
{{#assert_equals: {{#var: bar }} | boofar }}
<!-- Assert the variable "baz" is numeric -->
{{#assert_is_numeric: {{#var: baz }} }}
</testcase>
<testcase name="testRisky" group="Foobar tests" context="user">
<!-- This test would be marked as "Risky", because it contains no assertions -->
</testcase>
See also
- Extension:MWUnit/Getting started - Getting started with MWUnit
- Manual:Unit testing - Manual about unit testing on MediaWiki
- Pages with script errors
- Pages with broken file links
- Stable extensions
- Special page extensions
- Parser function extensions
- API extensions
- ContentHandler extensions
- Extensions with master compatibility policy
- Extensions with manual MediaWiki version
- MIT licensed extensions
- Extensions in GitHub version control
- Extensions which add rights
- ParserFirstCallInit extensions
- LoadExtensionSchemaUpdates extensions
- PageContentSaveComplete extensions
- ContentHandlerDefaultModelFor extensions
- SkinBuildSidebar extensions
- ArticleDeleteComplete extensions
- ParserFetchTemplate extensions
- UnitTestsList extensions
- BeforePageDisplay extensions
- MovePageIsValidMove extensions
- All extensions
- Extensions not in ExtensionJson