Что такое MUnit Framework?
MUnit — это среда тестирования приложений Mule, которая позволяет создавать автоматизированные тесты для интеграций Mule и API. MUnit очень хорошо интегрируется с Anypoint Studio и Maven.
MUnit Matchers
Соответствия MUnit — это набор функций DataWeave, которые определяют условия утверждения для любого значения в выражении. При определении совпадений включите в выражение префикс MunitTools ::.
Сопоставители группируются в соответствии с типом условий, которые вы хотите проверить.
Вам также может понравиться: MUnit Toward Automated Unit Test Cases
Тип соответствия
- Основные Matchers
- Струны
- Сопоставимые сопоставители
- Итерируемый и Map Matchers
MUnit Core Matchers
Matchers | Описание | пример |
---|---|---|
nullValue () |
Проверяет, что выражение является нулевым. |
# [MunitTools :: nullValue ()] |
notNullValue () |
Проверяет, что выражение не является нулевым. |
# [MunitTools :: notNullValue ()] |
withMediaType (String) |
Проверяет, что тип носителя выражения является указанным. |
# [MunitTools :: withMediaType ( ‘текст / XML’)] |
withEncoding (String) |
Проверяет, указана ли кодировка выражения. |
# [MunitTools :: withEncoding ( ‘UTF-8’)] |
оба (Matcher, Matcher) |
Проверяет, что оба предоставленных соответствия успешны. |
# [MunitTools :: оба (MunitTools :: notNullValue (), MunitTools :: equalTo ( ‘пример’))] |
либо (Сличитель, Сличитель) |
Проверяет, что хотя бы один из совпадений успешен. |
# [MunitTools :: либо (MunitTools :: nullValue (), MunitTools :: equalTo (0))] |
нет (объект) |
Проверяет, не является ли указанное совпадение неудачным. |
# [MunitTools :: нет (0)] |
anyOf (Array <Сличитель>) |
Проверяет, успешен ли кто-либо из участников. |
# [MunitTools :: anyOf ([MunitTools :: notNullValue (), MunitTools :: withMediaType ( ‘текст / XML’), MunitTools :: isEmptyString ()])] |
allOf (Array <Сличитель>) |
Проверяет, все ли совпадения успешны. |
# [MunitTools :: allOf ([MunitTools :: notNullValue (), MunitTools :: withMediaType ( ‘текст / XML’), MunitTools :: isEmptyString ()])] |
MUnit String Matchers
Matchers | Описание | пример |
---|---|---|
containsString (String) |
Проверяет, что выражение содержит указанную строку. |
# [MunitTools :: containsString ( ‘пример’)] |
StartsWith (String) |
Проверяет, что выражение начинается с указанной строки. |
# [MunitTools :: StartsWith ( ‘экзамен’)] |
EndsWith (String) |
Проверяет, что выражение заканчивается указанной строкой. |
# [MunitTools :: EndsWith ( ‘PLE’)] |
isEmptyString () |
Проверяет, что выражение имеет нулевую длину. |
# [MunitTools :: isEmptyString ()] |
isEmptyOrNullString () |
Проверяет, является ли выражение нулевым или имеет нулевую длину. |
# [MunitTools :: isEmptyOrNullString ()] |
equalToIgnoringCase (String) |
Проверяет, что выражение равно указанной строке, игнорируя регистр. |
# [MunitTools :: equalToIgnoringCase ( ‘пример’)] |
equalToIgnoringWhiteSpace (String) |
Проверяет, что выражение равно строке без учета начальных и конечных пробелов, и сжимает все внутренние пробелы в один пробел. |
# [MunitTools :: equalToIgnoringWhiteSpace (‘Пример’)] |
stringContainsInOrder (Array <String>) |
Проверяет, что выражение содержит все указанные подстроки, независимо от порядка их появления. |
# [MunitTools :: stringContainsInOrder ([‘an’, ‘example’])] |
MUnit сопоставимые сопоставители
Matchers | описание | пример |
---|---|---|
GreaterThan (Сопоставимые) |
Проверяет, что выражение больше указанного значения. |
# [MunitTools :: GreaterThan (| 2017-08-09 |)] |
greaterThanOrEqualTo (Сопоставимые) |
Проверяет, что выражение больше или равно указанному значению. |
# [MunitTools :: greaterThanOrEqualTo (20)] |
LessThan (Сопоставимые) |
Проверяет, что выражение меньше указанного значения. |
# [MunitTools :: lessThanOrEqualTo (20)] |
closeTo (число, номер) |
Проверяет, что выражение близко к первому числу, используя второе число в качестве значения дельты. Другими словами, проверяет, что выражение принадлежит диапазону, определенному первым числом +/- вторым числом. |
# [MunitTools :: closeTo (1, 0,01)] |
equalTo (Объект) |
Проверяет, что выражение равно определенному значению. |
# [MunitTools :: equalTo (0)] |
Карта MUnit и итерационные совпадения
matchers | описание | пример |
---|---|---|
everyItem (Сличитель) |
Проверяет, что каждый элемент в выражении соответствует указанному сопоставителю. |
# [MunitTools :: everyItem (MunitTools :: notNullValue ())] |
hasItem (Объект) |
Проверяет, что любой элемент в выражении соответствует указанному сопоставителю. |
# [MunitTools :: hasItem ( ‘пример’)] |
hasSize (Сличитель | Integer) |
Проверяет, что размер выражения соответствует указанному сопоставителю. |
# [MunitTools :: hasSize (MUnitTools :: GreaterThan (2))] |
пусто() |
Проверяет, что выражение является пустой коллекцией. |
# [MunitTools :: IsEmpty ()] |
hasKey (Сличитель | String) |
Проверяет, что выражение имеет ключ, который соответствует указанному сопоставителю. |
# [MunitTools :: hasKey (MunitTools :: StartsWith ( ‘а’))] |
HasValue (Объект) |
Проверяет, что выражение имеет значение, которое соответствует указанному сопоставителю. |
# [MunitTools :: HasValue (MunitTools :: StartsWith ( ‘а’))] |
Теперь мы увидим несколько примеров, связанных с Core и String Matchers.
Проверьте, что полезная нагрузка ответа не является нулевой
Мы напишем MUnit, чтобы проверить, что полезная нагрузка не равна нулю, и мы будем использовать ядро matcher notNullValue () .
В приведенном выше тестовом MUNIT случае, мы создаем URI Param в наборе событий , и мы будем использовать утверждающие , что проверить , если полезная нагрузка не является нулевым.
На скриншоте ниже мы настраиваем Set Event для передачи параметра URI в поток и Matcher notNullValue () для подтверждения этого.
Код
XML
1
2
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
xmlns:munit="http://www.mulesoft.org/schema/mule/munit" xmlns:munit-tools="http://www.mulesoft.org/schema/mule/munit-tools"
4
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
5
xsi:schemaLocation="
6
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
7
http://www.mulesoft.org/schema/mule/munit http://www.mulesoft.org/schema/mule/munit/current/mule-munit.xsd
8
http://www.mulesoft.org/schema/mule/munit-tools http://www.mulesoft.org/schema/mule/munit-tools/current/mule-munit-tools.xsd">
9
<munit:config name="openbanking-accounts-api-test-suite.xml" ></munit:config>
10
<munit:test name="openbanking-accounts-api-test-suite-get:\accounts\(accountId)\balances:openbanking-accounts-api-configTest" doc:id="a217f12d-7375-4e35-81ae-a3e75908224e" description="Test">
11
<munit:execution >
12
<munit:set-event doc:name="Set Event" doc:id="a628818c-04dd-48ee-aa85-a7f20b9610fa" >
13
<munit:attributes value="#[{uriParams:{accountId:'22289'}}]" ></munit:attributes>
14
</munit:set-event>
15
<flow-ref doc:name="Flow-ref to get:\accounts\(accountId)\balances:openbanking-accounts-api-config" doc:id="b18bed3e-21e8-4869-a36f-39e0614a43d9" name="get:\accounts\(accountId)\balances:openbanking-accounts-api-config"></flow>
16
</munit:execution>
17
<munit:validation >
18
<munit-tools:assert-that doc:name="Assert that" doc:id="cf16931a-1697-4e52-be1b-b7919c77f157" expression="#[payload]" is="#[MunitTools::notNullValue()]" message="Payload is empty"></munit>
19
</munit:validation>
20
</munit:test>
21
</mule>
Проверка отклика Payload MediaType является применение / JSON
Мы напишем MUnit, чтобы проверить, что типом медиа-содержимого для ответа является application / JSON, и мы будем использовать средство сравнения ядра с MediaType (‘application / JSON’) .
Код
XML
xxxxxxxxxx
1
2
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
xmlns:munit="http://www.mulesoft.org/schema/mule/munit" xmlns:munit-tools="http://www.mulesoft.org/schema/mule/munit-tools"
4
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
5
xsi:schemaLocation="
6
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
7
http://www.mulesoft.org/schema/mule/munit http://www.mulesoft.org/schema/mule/munit/current/mule-munit.xsd
8
http://www.mulesoft.org/schema/mule/munit-tools http://www.mulesoft.org/schema/mule/munit-tools/current/mule-munit-tools.xsd">
9
<munit:config name="openbanking-accounts-api-test-suite.xml" ></munit:config>
10
<munit:test name="openbanking-accounts-api-test-suite-get:\accounts\(accountId)\balances:openbanking-accounts-api-configTest" doc:id="a217f12d-7375-4e35-81ae-a3e75908224e" description="Test">
11
<munit:execution >
12
<munit:set-event doc:name="Set Event" doc:id="a628818c-04dd-48ee-aa85-a7f20b9610fa" >
13
<munit:attributes value="#[{uriParams:{accountId:'22289'}}]" ></munit:attributes>
14
</munit:set-event>
15
<flow-ref doc:name="Flow-ref to get:\accounts\(accountId)\balances:openbanking-accounts-api-config" doc:id="b18bed3e-21e8-4869-a36f-39e0614a43d9" name="get:\accounts\(accountId)\balances:openbanking-accounts-api-config"></flow>
16
</munit:execution>
17
<munit:validation >
18
<munit-tools:assert-that doc:name="Assert that" doc:id="cf16931a-1697-4e52-be1b-b7919c77f157" expression="#[payload]" is="#[MunitTools::withMediaType('application/json')]" message="Payload is not json"></munit>
19
</munit:validation>
20
</munit:test>
21
</mule>
Проверьте поле ответа полезной нагрузки AccountId Начать с 228
Мы напишем MUnit для проверки поля полезной нагрузки ответа AccountId Start With 228, и мы будем использовать строковое совпадение начисления (‘228’) .
Код
XML
xxxxxxxxxx
1
2
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
xmlns:munit="http://www.mulesoft.org/schema/mule/munit" xmlns:munit-tools="http://www.mulesoft.org/schema/mule/munit-tools"
4
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
5
xsi:schemaLocation="
6
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
7
http://www.mulesoft.org/schema/mule/munit http://www.mulesoft.org/schema/mule/munit/current/mule-munit.xsd
8
http://www.mulesoft.org/schema/mule/munit-tools http://www.mulesoft.org/schema/mule/munit-tools/current/mule-munit-tools.xsd">
9
<munit:config name="openbanking-accounts-api-test-suite.xml" ></munit:config>
10
<munit:test name="openbanking-accounts-api-test-suite-get:\accounts\(accountId)\balances:openbanking-accounts-api-configTest" doc:id="a217f12d-7375-4e35-81ae-a3e75908224e" description="Test">
11
<munit:execution >
12
<munit:set-event doc:name="Set Event" doc:id="a628818c-04dd-48ee-aa85-a7f20b9610fa" >
13
<munit:attributes value="#[{uriParams:{accountId:'22289'}}]" ></munit:attributes>
14
</munit:set-event>
15
<flow-ref doc:name="Flow-ref to get:\accounts\(accountId)\balances:openbanking-accounts-api-config" doc:id="b18bed3e-21e8-4869-a36f-39e0614a43d9" name="get:\accounts\(accountId)\balances:openbanking-accounts-api-config"></flow>
16
</munit:execution>
17
<munit:validation >
18
<munit-tools:assert-that doc:name="Assert that" doc:id="cf16931a-1697-4e52-be1b-b7919c77f157" expression="#[payload]" is="#[MunitTools::startsWith('228')]" message="Payload is not json"></munit>
19
</munit:validation>
20
</munit:test>
21
</mule>
POM Munit Зависимость и плагин
Maven Dependency
XML
xxxxxxxxxx
1
<dependency>
2
<groupId>com.mulesoft.munit</groupId>
3
<artifactId>munit-runner</artifactId>
4
<version>2.2.1</version>
5
<classifier>mule-plugin</classifier>
6
<scope>test</scope>
7
</dependency> <dependency>
8
<groupId>com.mulesoft.munit</groupId>
9
<artifactId>munit-tools</artifactId>
10
<version>2.2.1</version>
11
<classifier>mule-plugin</classifier>
12
<scope>test</scope>
13
</dependency>
Плагин Maven
XML
xxxxxxxxxx
1
<p>
2
<groupId>com.mulesoft.munit.tools</groupId>
3
<artifactId>munit-maven-plugin</artifactId>
4
<version>${munit.version}</version>
5
<executions>
6
<execution>
7
<id>test</id>
8
<p>test</phase>
9
<goals>
10
<goal>test</goal>
11
<goal>coverage-report</goal>
12
</goals>
13
</execution>
14
</executions>
15
<configuration>
16
<coverage>
17
<runCoverage>true</runCoverage>
18
<formats>
19
<format>html</format>
20
</formats>
21
</coverage>
22
</configuration>
23
</plugin>
YouTube Видео Ссылки
Вот как вы можете реализовать тестовые случаи MUnit для вашего приложения MuleSoft.
Дальнейшее чтение
Тестирование Dataweave с MUnit