<munit:config>
<munit:parameterizations>
<munit:parameterization name="firstParameterization">
<munit:parameters>
<munit:parameter propertyName="name" value="Robert"/>
<munit:parameter propertyName="lastname" value="Plant"/>
</munit:parameters>
</munit:parameterization>
<munit:parameterization name="secondParameterization">
<munit:parameters>
<munit:parameter propertyName="name" value="Jimmy"/>
<munit:parameter propertyName="lastname" value="Page"/>
</munit:parameters>
</munit:parameterization>
</munit:parameterizations>
</munit:config>
Parameterized
A parameterized test suite runs the same tests but with different inputs.
The test suite parameterization is defined at a configuration level as follows:
The Test Suite runs twice: Firstly, with the firstParameterization
parameters. Secondly, with the secondParameterization
parameters.
For example, if you have a test that sets a payload for a flow and expects a result:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:munit="http://www.mulesoft.org/schema/mule/munit"
xmlns:munit-tools="http://www.mulesoft.org/schema/mule/munit-tools"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/munit http://www.mulesoft.org/schema/mule/munit/current/mule-munit.xsd
http://www.mulesoft.org/schema/mule/munit-tools http://www.mulesoft.org/schema/mule/munit-tools/current/mule-munit-tools.xsd">
<munit:config name="parameterized-test.xml">
<munit:parameterizations>
<munit:parameterization name="sumThree">
<munit:parameters>
<munit:parameter propertyName="input" value="#[1]"/>
<munit:parameter propertyName="output" value="#[2]"/>
</munit:parameters>
</munit:parameterization>
<munit:parameterization name="sumFive">
<munit:parameters>
<munit:parameter propertyName="input" value="#[2]"/>
<munit:parameter propertyName="output" value="#[4]"/>
</munit:parameters>
</munit:parameterization>
</munit:parameterizations>
</munit:config>
<munit:test name="expectFlowResult">
<munit:behavior>
<set-payload value="${input}"/>
</munit:behavior>
<munit:execution >
<flow-ref name="myFlow"/>
</munit:execution>
<munit:validation>
<munit-tools:assert-equals actual="#[payload]" expected="${output}" />
</munit:validation>
</munit:test>
</mule>
Parameterization from File
To use the same parameterized values on different test suites, you must save your parameterizations values in a YAML file in the /test/resources
directory of your Mule application project:
firstParameterization:
name: "Robert"
lastname: "Plant"
secondParameterization:
name: "Jimmy"
lastname: "Page"
And reference it from your test suite configuration:
<munit:config>
<munit:parameterizations file="parameterizations.yaml" />
</munit:config>
You can combine both methods to add parameterized values to a test suite:
<munit:config name="parameterization-from-file-test.xml">
<munit:parameterizations file="parameterizations.yaml" >
<munit:parameterization name="thirdParameterization">
<munit:parameters>
<munit:parameter propertyName="name" value="John"/>
<munit:parameter propertyName="lastname" value="Bonham"/>
</munit:parameters>
</munit:parameterization>
</munit:parameterizations>
</munit:config>
If you define the same parameterization key in a YAML file and your test suite configuration, the test suite parameterization overrides your YAML parameterization.