Testing the components that will be used within a larger framework can often be very
cumbersome and tricky. With NiFi, we strive to make testing components as easy as possible.
In order to do this, we have created a nifi-mock module that can be used
in conjunction with JUnit to provide extensive testing of components.

The Mock Framework is mostly aimed at testing Processors, as these are by far the most
commonly developed extension point. However, the framework does provide the ability to test
Controller Services as well.

Components have typically been tested by creating functional tests to verify component
behavior. This is done because often a Processor will consist of a handful of helper methods
but the logic will largely be encompassed within the onTrigger method.
The TestRunner interface allows us to test Processors and Controller
Services by converting more "primitive" objects such as files and byte arrays into
FlowFiles and handles creating the ProcessSessions and ProcessContexts needed for a
Processor to do its job, as well as invoking the necessary lifecycle methods in order to
ensure that the Processor behaves the same way in the unit tests as it does in
production.