单元测试截面功能



我正在使用Flink V.1.4.0。

我已经实现了一个模块,作为我正在开发的软件包的一部分,其角色是重复绘制流。该模块很简单:

public class RemoveDuplicateFilter<T> extends RichFlatMapFunction<T, T> {
static final ValueStateDescriptor<Boolean> SEEN_DESCRIPTOR = new ValueStateDescriptor<>("seen", Boolean.class);
private ValueState<Boolean> seen;
@Override
public void open(Configuration configuration) {
  RuntimeContext runtimeContext = this.getRuntimeContext();
  seen = runtimeContext.getState(SEEN_DESCRIPTOR);  
}
@Override
public void flatMap(T value, Collector<T> out) throws Exception {
  Boolean hasBeenSeen = seen.value();
  if(hasBeenSeen == null || !hasBeenSeen) {
    out.collect(value);
    seen.update(true);
  }  
}

问题是:如何在不必实例化实际Flink估值的情况下测试此代码?即使用Mockito?

我已经尝试了许多事情,但是从本质上讲,当涉及到呼叫时:

RuntimeContext runtimeContext = Mockito.mock(RuntimeContext.class);
...
when(runtimeContext.getState(SEEN_DESCRIPTOR)).thenReturn(seen);

呼叫总是失败。我尝试用Matchers.any()替换SEEN_DESCRIPTOR,但仍然没有运气。

有什么建议?

您可以使用FlinkSpector进行功能的单位测试。

相关内容

  • 没有找到相关文章

最新更新