Apache kafka 如何对Kafka流进行单元测试

Apache kafka 如何对Kafka流进行单元测试,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,在探索如何对Kafka流进行单元测试时,我遇到了ProcessorTopologyTestDriver,不幸的是,这个类似乎已经被版本0.10.1.0() KTable问题是否有解决办法 我看过“Mocked Streams”项目,但首先它使用的是版本0.10.2.0,而我使用的是0.10.1.1,其次是Scala,而我的测试是Java/Groovy 这里关于如何在不必引导zookeeper/kafka的情况下对流进行单元测试的任何帮助都将非常有用 注意:我确实有使用嵌入式服务器的集成测试,这是

在探索如何对Kafka流进行单元测试时,我遇到了
ProcessorTopologyTestDriver
,不幸的是,这个类似乎已经被版本
0.10.1.0
()

KTable问题是否有解决办法

我看过“Mocked Streams”项目,但首先它使用的是版本
0.10.2.0
,而我使用的是
0.10.1.1
,其次是Scala,而我的测试是Java/Groovy

这里关于如何在不必引导zookeeper/kafka的情况下对流进行单元测试的任何帮助都将非常有用

注意:我确实有使用嵌入式服务器的集成测试,这是用于单元测试,也就是快速、简单的测试

编辑

谢谢拉蒙·加西亚


对于通过Google搜索到达这里的人,请注意测试驱动程序类现在是org.apache.kafka.streams.TopologyTestDriver

此类位于maven包groupId org.apache.kafka,artifactId kafka streams test utils中


我找到了解决这个问题的方法,我不确定这是否是答案,尤其是在评论之后。无论如何,分享我目前所拥有的


我完全复制了
ProcessorTopologyTestDriver
(这就是我正在使用的版本)

为了解决这个问题,我让
private final MockConsumer restoreStateConsumer
可访问,并将chunk
task=new StreamTask(…
移动到一个单独的方法,例如
引导

在测试的设置阶段,我执行以下操作

driver = new ProcessorTopologyTestDriver(config, builder)
ArrayList partitionInfos = new ArrayList();
partitionInfos.add(new PartitionInfo('my_ktable', 1, (Node) null, (Node[]) null, (Node[]) null));
driver.restoreStateConsumer.updatePartitions('my_ktable', partitionInfos);
driver.restoreStateConsumer.updateEndOffsets(Collections.singletonMap(new TopicPartition('my_ktable', 1), Long.valueOf(0L)));
driver.bootstrap()
就这样

奖金

我也遇到过这样的问题,幸运的是,因为我复制了整个课程,所以我能够通过一些小的调整来“挑选”这些内容


感谢您的反馈。虽然该驱动程序显然不是官方的测试类,但它被证明非常有用!

对于通过谷歌搜索到达这里的人,请注意,测试驱动程序类现在是org.apache.kafka.streams.TopologyTestDriver


这个类在maven包groupId org.apache.kafka中,artifactId kafka streams test utils

ProcessorTopologyTestDriver
是内部测试类,不是正式发布的一部分。您提到的JIRA已经修复了——因此您可以从Github获得最新版本。如果
测试
是使用依赖项上的lifier。我不能使用最新版本,因为我必须支持
0.10.1.1
。以防万一您不知道@Hartimer:Kafka Streams版本
0.10.2.0
可以针对
0.10.1.1
Kafka代理运行,它是向后兼容的。因此,如果代理端版本要求是阻碍您运行的原因卡夫卡溪流的那一边——这不是。;-)很高兴知道!:)谢谢但是,如果我看得正确,则链接问题的修复程序与版本
0.11.0
绑定,该版本尚未发布,对吗?我猜正确的解决方案--这就是我指向修复程序的原因。。。有计划发布官方测试驱动程序——但还没有时间表——这应该比官方发布的更容易,至少从0.11开始。非常感谢后续的Dimitry!添加进行此更改的版本更有意义<代码>1.1.0