I 1つのメイン出力と1 sideoutput有するアパッチビームとPARDO機能テストユニットだ:私は主試験するためのユニット・テスト・クラスを設定ユニットテスト側出力
public class GetPubsubMessageDoFn extends DoFn<PubsubMessage, PubsubPayload.PubsubPayloadDTO> {
@ProcessElement
public void processContext(ProcessContext processContext) {
PubsubPayload pubsubPayload = new PubsubPayload(processContext.element());
processContext.output(pubsubPayload.getPayload()); //main output
processContext.output(ORIGIN_PATH_TUPLE_TAG, GCSUtils.toGSURL(pubsubPayload.getPayload().bucket, pubsubPayload.getPayload().name)); //side output
}
}
- 及び側出力:
public class GetPubsubMessageDoFnTest {
private DoFnTester<PubsubMessage, PubsubPayloadDTO> getPubsubMessageDoFn;
private Injector injector;
private final TupleTagList tags = TupleTagList.of(PUBSUB_PAYLOAD_DTO_TUPLE_TAG).and(ORIGIN_PATH_TUPLE_TAG);
@Before
public void setup() {
injector = Guice.createInjector(new GetPubsubMessageTestModule());
this.getPubsubMessageDoFn = DoFnTester.of(injector.getInstance(GetPubsubMessageDoFn.class));
this.getPubsubMessageDoFn.setOutputTags(tags); //Does not compile
}
//Tests
the documentationによると、私はDoFnTester
クラスに存在しないsetOutputTags(tags)
だけでその機能を使用して側出力を設定することができるはずです。私はGoogle Cloud Dataflow dependencyバージョン2.1.0を使用していますが、これはApache Beamの機能のサブセットを使用していますが、DoFnTestersetOutputTags
のApache Beamリファレンスドキュメントも表示されていません(イントロで再度説明しています)。