首页 > 解决方案 > NiFi:如何开发 NiFi 控制器服务的 JUnit 测试?

问题描述

我正在开发一个 NiFi 控制器服务,该控制器服务具有另一个控制器服务的属性,即 dbcpservice。根据github.com/apache/nifi的源码,控制器服务测试也依赖于处理器测试,即定义一个具有自定义控制器服务属性的TestProcessor,然后通过该处理器操作控制器服务。但就我而言,我的控制器服务的属性是另一个控制器服务(dbcpservice),我不知道如何编写一个junit测试来设置控制器服务。

标签: junitapache-nifi

解决方案


您可以在测试中通过匿名内部类(或命名类)创建一个简单的处理器,以练习控制器服务的行为。例如,通过在测试类旁边DBCPServiceTest定义来做到这一点。TestProcessor测试处理器需要的只是一个属性描述符,它接受与被测系统 (SUT) 相同类型的控制器服务——在本例中,是您的自定义控制器服务。

如果您询问如何配置自定义服务(CustomService从这里开始),请将参数传递给TestRunner实例,如下所示:

final TestRunner runner = TestRunners.newTestRunner(TestProcessor.class);
final CustomService service = new CustomService();
service.setNestedService(new NestedService());
final Map<String, String> properties = new HashMap<String, String>();
runner.addControllerService("custom-service-id", service, properties);

推荐阅读