当前位置: 首页 > 知识库问答 >
问题:

如何对Kafka流进行单元测试

柴英光
2023-03-14

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

对于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中

共有1个答案

谭吉星
2023-03-14

我找到了一个解决这个问题的方法,我不确定它是否是答案,特别是在https://stackoverflow.com/users/4953079/matthias-j-sax注释之后。无论如何,分享我目前所拥有的...

我完全从0.10.1分支(这是我使用的版本)复制了ProcessorTopologyTestDriver

为了解决KAFKA-4408,我使私有最终模拟消费者 restorestateconsumer 可访问,并将块task=new StreamTask(...移到一个单独的方法,例如bootstrap

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

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()

就这样...

奖金

我还遇到了KAFKA-4461,幸运的是,由于我复制了整个类,所以我能够通过一些小的调整来“挑选”已被接受的修复。

一如既往地感谢反馈。虽然显然不是一个正式的测试类,但这个驱动程序被证明是超级有用的!

 类似资料:
  • 我正在尝试(单元)测试使用Kafka DSL的Spring Cloud Stream Kafka处理器,但收到以下错误“无法建立到节点1的连接。代理可能不可用。”。此外,测试不会停止。我尝试了EmbeddedKafka和TestBinder,但我有同样的行为。我试图从Spring Cloud团队(有效)给出的响应开始,我将应用程序改编为使用Kafka DSL,并将测试类保持原样。EmbeddedK

  • <代码>list.stream()。 列表中的每个项目都将从数据库中删除。 假设列表中有3个项目,如何进行单元测试: 删除被调用了3次。 删除被称为“按顺序/顺序”,即列表中的元素顺序?

  • 问题内容: 如何在单元测试中测试 hashCode()函数? 问题答案: 每当我覆盖equals和hash代码时,我都会按照Joshua Bloch在“ Effective Java”第3章中的建议编写单元测试。我确保equals和hash代码是自反的,对称的和可传递的。我还确保“不等于”对所有数据成员均正常工作。 当我检查对equals的调用时,我还要确保hashCode的行为符合预期。像这样:

  • 一段时间以来,我一直试图让Spring Cloud Stream与Kafka Streams一起使用,我的项目使用嵌入式kafka进行Kafka DSL测试,我使用这个存储库作为我的测试实现的基础(它本身就是这个问题的测试用例)。 我在这里制作了一个存储库来演示这一点。 基本上,当使用“Processor.class”的“DemoApplicationTest.ExampleAppWorking.

  • 问题内容: 我一直在学习AngularJS,并且在单元测试方面进展非常顺利,但是我遇到了一个棘手的问题。 假设我有一个简单的表格,例如: 如果我正在测试类似控制器的东西,我知道我会这样写(使用Jasmine + Karma): 但是我不知道我需要注入哪些服务,也没有运气在指南或文档中找到有关单元测试的文档。 一个单元如何在Angular中测试表单? 问题答案: 我不认为这是对此类内容进行单元测试的

  • 本文向大家介绍对Angular.js Controller如何进行单元测试,包括了对Angular.js Controller如何进行单元测试的使用技巧和注意事项,需要的朋友参考一下 一、写个简单的Angular App 在开始写测试之前,我们先写一个简单的计算App,它会计算两个数字之和。 代码如下: 二、简单说说里面涉及的一些基本概念: 创建一个 module 什么是angular.modul