如何在apachestorm中用模拟时间编写java单元测试?

ca1c2owp  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(458)

我有风暴拓扑,计算每分钟的聚合。我想通过java单元测试来介绍应用程序,但是我找不到任何java单元测试的工作示例。
我需要模拟时间上的变化,得到拓扑的输出并测试它。

kupeojn6

kupeojn61#

解决办法似乎是:

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

它利用了 Testing 类(从所有javadocs中莫名其妙地丢失)以及 Time 类及其有用的手动时间推进方法。
请注意,虽然这只会帮助你与风暴的内部时钟的东西,如滑动窗口等,你自己的代码需要知道模拟时间以及使用。java世界中的标准方法包括 Clock 类(仅限Java8)或 DateTimeUtils 如果你被约达时间困住了,那就去上课吧。

相关问题