Testing
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.