flink单元测试-无法设置上下文来处理所有功能

时间:2019-05-26 16:56:09

标签: apache-flink flink-streaming

假设我有这个

class FooProcess extends ProcessAllWindowFunction[String,String, TimeWindow]{
override def process(context: Context, elements: Iterable[String], out: Collector[String]): Unit = ???
}

我想为处理方法编写一些单元测试,但在模拟上下文时遇到问题

val context =  mock[Context[FooProcess]]

此导入失败(cannot resolve symbol Context

import org.apache.flink.streaming.api.functions.windowing.ProcessAllWindowFunction.Context

在flink中进行单元测试的任何想法/最佳做法?

1 个答案:

答案 0 :(得分:0)

这里的问题是ContextProcessAllWindowFunction类的内部类。在scala中,内部类绑定到外部对象。因此,如果您想模拟上下文并使用它来测试process()函数,则可以执行以下操作:

val foo = new FooProcess
val mock = mock[foo.Context]
foo.process(...)