junit - NiFi:如何开发 NiFi 控制器服务的 JUnit 测试?
问题描述
我正在开发一个 NiFi 控制器服务,该控制器服务具有另一个控制器服务的属性,即 dbcpservice。根据github.com/apache/nifi的源码,控制器服务测试也依赖于处理器测试,即定义一个具有自定义控制器服务属性的TestProcessor,然后通过该处理器操作控制器服务。但就我而言,我的控制器服务的属性是另一个控制器服务(dbcpservice),我不知道如何编写一个junit测试来设置控制器服务。
解决方案
您可以在测试中通过匿名内部类(或命名类)创建一个简单的处理器,以练习控制器服务的行为。例如,通过在测试类旁边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);
推荐阅读
- c++ - boost::process::child 在关闭输入流后不会退出
- php - 如何在mysql的第二个表上使用INNER JOIN和数组?
- php - 如何谷歌 Linechars 在 php 中显示年/月/日/小时/分钟/秒?
- javascript - Firestore 基于 orderBy 和限制从集合中检索单个文档,而不使用 forEach
- angular - 每当左键单击节点时提示自定义上下文菜单
- c++ - 我应该在没有有意义的恢复的情况下捕获异常吗?
- autofac - 如何在 Autofac 中获取已注册服务的列表
- c++ - 访问与父类是朋友的类的私有成员
- c# - 代码中添加到面板的标签控件不显示
- azure - 使用 terraform 创建 azure webhook