Apache Beam将PCollection转换为TableRow进行测试-数据流单元测试

时间:2019-03-21 07:45:34

标签: java unit-testing google-cloud-dataflow apache-beam dataflow

我正在尝试为管道编写单元测试。管道包括将结果写入BigQuery的步骤。在测试中,在写入BigQuery之前测试最后一步是适当的。在这种情况下,复合转换结果的返回类型为PCollection<TableRow>。我试图断言该结果等于我使用TableRow并分别设置值手动创建的new TableRow()

是否可以将手动创建的TableRow转换为PCollection,还是可以从PCollection中提取TableRow?或者,我是否需要编写另一个转换以将复合转换的结果转换为String并将预期结果(MANUALLY_CREATED_TABLEROW)转换为String并检查它们的相等性?

 public void testPipeline() throws Exception {
    PCollection<String> input = p.apply(Create.of(STRING_MESSAGE).withCoder(StringUtf8Coder.of()));

    PCollection<TableRow> output = input.apply(new MyCompositeTransform());

    PAssert.that(output).containsInAnyOrder(MANUALLY_CREATED_TABLEROW);
    p.run().waitUntilFinish();
}

a thread的错误和问题是相似的。

0 个答案:

没有答案