Extension:MWUnit/Getting started
This tutorial assumes you have MWUnit installed and working. In this tutorial, you will learn how to write and run a simple unit test for the fictional template Template:AddTen
. The documentation on how to install MWUnit can be found on this page.
Tutorial
[edit]Creating a test
[edit]We will create a new template, Template:AddTen
. This template adds 10
to the first argument, or 10
to 0
if no argument is given. It returns an error if and only if the first argument is not a number. This template makes use of the ParserFunctions extension.
We will also create the associated test page for this template, which we will appropriately call Test:AddTen
. Here is what these two pages may look like:
Template:AddTen
[edit]<noinclude> This is the "AddTen" template. {{AddTen|12}} -> 22 {{AddTen|0}} -> 10 {{AddTen}} -> 10 {{AddTen|a}} -> Expression error: Unrecognized word "foo". </noinclude> <includeonly> {{#expr: {{{1|0}}} + 10 }} </includeonly>
Test:AddTen
[edit]<!-- This test tests Template:AddTen --> <testcase name="testAddTenToZero" group="AddTen tests"> <!-- This test tests whether giving 0 to the template returns 10 --> {{#assert_equals: {{AddTen|0}} | 10 }} </testcase> <testcase name="testAddTenToNothing" group="AddTen tests"> <!-- This test tests whether giving nothing to the template returns 10 --> {{#assert_equals: {{AddTen}} | 10 }} </testcase> <testcase name="testAddTenToString" group="AddTen tests"> <!-- This test tests whether giving a string to the template returns an error --> {{#assert_error: {{AddTen|foobar}} }} </testcase> <testcase name="testAddTenToNegativeTen" group="AddTen tests"> <!-- This test tests whether giving a negative number to the template works --> {{#assert_equals: {{AddTen|-10}} | 0 }} </testcase>
The test page we have created contains four test cases. Each test case should test exactly one distinct thing of the template that is being tested. In this case, the first test case tests if adding 10
to 0
results in 10
, the second test tests whether the first parameter can be left empty, and so on.
As you can see, each test has the same "group" attribute. Grouping similar tests together make it easier to execute them in bulk, since we can run every test in a certain group. Tests in the same group are not required to be on the same page.
Running tests
[edit]There are several ways to run a test. The most obvious way is to click the "Run tests" button in the sidebar on a test page. Clicking this button will run all tests on the current test page. If you are using a skin that hides this button, the shortcut Alt+Shift+a
can also be used.
Another way to run a test is to go to the special page Special:UnitTests
.
See also
[edit]- Extension:MWUnit/Writing tests - Documentation on writing tests
- Extension:MWUnit/Running tests - Documentation on running tests
- Extension:MWUnit/Organizing tests - Documentation on how to organize tests
- Extension:MWUnit/Assertions - List of available assertions
- Extension:MWUnit/Annotations - List of available test annotations
- Manual:Unit testing - Manual page about unit testing