unit-testing - 测试 Storm bolt 和喷口

标签 unit-testing junit apache-storm

这是一个关于用 Java 编写的 Storm 拓扑中的 Bolts 和 Spouts 单元测试的一般问题。

单元测试(JUnit?)BoltsSpouts 的推荐实践和指南是什么?

例如,我可以为 Bolt 编写 JUnit 测试,但无需完全理解框架(例如 Bolt 的生命周期)和序列化含义,很容易犯了基于构造函数创建不可序列化成员变量的错误。在 JUnit 中,这个测试会通过,但在拓扑中,它不起作用。我完全想象有很多测试点需要考虑(例如这个带有序列化和生命周期的示例)。

因此,如果您使用基于 JUnit 的单元测试,是否建议您运行一个小型模拟拓扑 (LocalMode?) 并测试 Bolt 的隐含契约(或 Spout)在该拓扑下?或者,使用 JUnit 是否可以,但这意味着我们必须模拟 Bolt 的生命周期(创建它、调用 prepare()、模拟 Config,等)仔细?在这种情况下,被测类(Bolt/Spout)需要考虑哪些一般测试点?

其他开发人员在创建适当的单元测试方面做了什么?

我注意到有一个拓扑测试 API(参见:https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java)。是否最好使用一些 API,并为每个单独的 BoltSpout 建立“测试拓扑”(并验证 Bolt 必须提供的隐式契约) ,例如 - 它是声明的输出)?

谢谢

最佳答案

自版本 0.8.1 起,Storm 的单元测试工具已通过 Java 公开:

有关如何使用此 API 的示例,请查看此处:

关于unit-testing - 测试 Storm bolt 和喷口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549265/

相关文章:

c# - 覆盖 Autofac 注册 - 使用 DI 进行集成测试

visual-studio-2010 - Visual Studio 2010无法识别单元测试

java - 如何离线使用 RestTemplate 对类进行单元测试?

jvm - 监控 Storm JVM 指标

java - 如何在 Storm 拓扑中序列化非原始类型(您自己的类)的字段?

unit-testing - 如何使用 Enzyme 测试 React 中子组件回调调用的组件回调?

unit-testing - Scala 中的 JUnit 测试类别?

java - 'correct' 测试 JUnit 测试无法直接看到的 Runnables 的方法是什么?

java - mvn 包在本地执行比 Bamboo 更多的测试

database - 持久化来自 Apache Storm 的数据,任何框架?