与 Aggregators being removed从 Beam 2 开始,是否有一种首选方法来测试 Counter
值,就像我对 Aggregators
所做的那样:
assertThat(tester.getAggregatorValue(fn.success)).isEqualTo(1);
assertThat(tester.getAggregatorValue(fn.failure)).isEqualTo(0);
assertThat(tester.getAggregatorValue(fn.empty)).isEqualTo(0);
其中 tester
是我的 DoFn
实现的 DoFnTester
类的实例和 fn
实例,带有聚合器success
、failure
和 empty
是最终的包私有(private)可见字段。
最佳答案
这与最近在 user@beam.apache.org 列表上提出的问题类似。
answer there suggested installing在运行测试之前创建一个 MetricsContainerImpl 并与之交互,就像 Beam 对其现有测试所做的那样(例如 LateDataDroppingDoFnRunnerTest )。
他们还将其封装在 TestRule
中:
@Rule TestMetrics metrics = new TestMetrics();
@Test
public void invalids() {
final DoFnTester<InputT, OutputT> doFnTester =
DoFnTester.of(fixture);
doFnTester.processElement(input);
assertThat(metrics,counterValue(fixture.ctr), is(1L));
}
关于java - 使用 Aggregator 测试 Metrics.Counter 值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43930585/