<dependency>
    <groupId>com.mulesoft.munit</groupId>
    <artifactId>munit-assert</artifactId>
    <version>${munit.version}</version>
    <scope>test</scope>
</dependency>
Run Custom Event Processor
The Run Custom event processor enables you to assert the Mule event content against a custom assertion.
To add the Run Custom processor to your project, add the following dependency to your pom.xml file:
You also have to add your custom assertion class to the mule-artifact.json file as an exported resource.
For example, you can define the following assertion in Java:
package org.mule.custom;
import org.mule.munit.assertion.api.MunitAssertion;
import org.mule.munit.assertion.api.TypedValue;
public class CustomAssertion implements MunitAssertion {
    @Override
    public void execute(TypedValue expression, Object params) throws AssertionError { (1)
        if (!"Hello World".equals(expression.getValue())) { (2)
            throw new AssertionError("Error the payload is incorrect");
        }
     }
}
| 1 | Implement the only method in the interface public void execute(TypedValue expression, Object params) throws AssertionError. | 
| 2 | Run your custom logic, which in this case validates that the message payload is Hello World. | 
The CustomAssertion class must be located in the scr/test/java directory.
And use the Run Custom Event Processor to run it:
<munit-tools:run-custom
  assertion="org.mule.custom.CustomAssertion" (1)
  expression="#[payload]"/>
| 1 | The assertion field needs to have the canonical class name of your custom assertion and the class needs to be exported. | 
To export it when packaging your application, add the org.mule.custom package to your mule-artifact.json
{
    "name": "mule-application",
    "minMuleVersion": "4.2.0",
    "classLoaderModelLoaderDescriptor": {
        "id": "mule",
        "attributes": {
            "exportedPackages": [
                "org.mule.custom"
            ]
        }
    }
}
You only need to configure the package name in the exportedPackages collection.
 | 



