如何在Apache Storm中用模拟时间编写Java单元测试?

时间:2016-11-30 13:16:46

标签: apache-storm

我有Storm拓扑,可以计算每分钟的聚合。 我想通过Java单元测试来覆盖应用程序,但我无法做到 找到一些Java单元测试的任何工作示例。

我需要及时模拟变化,获取拓扑输出并进行测试。

1 个答案:

答案 0 :(得分:0)

解决方案似乎是:

Testing.withSimulatedTimeLocalCluster(new TestJob() {
    public void run(Cluster cluster) {
        // your testing logic here.
        Time.advanceTime(100);
    }
});

利用Testing类(所有Javadocs都莫名其妙地漏掉了)以及Time类及其有用的手动时间推进方法。

请注意,这只会帮助您使用Storm的内部时钟,例如滑动窗口等。您自己的代码也需要了解模拟时间。在Java世界中执行此操作的标准方法包括Clock类(仅限Java 8)或DateTimeUtils类,如果您遇到Joda-Time。