Java 使用本地仿真器测试PubsubIO读取

Java 使用本地仿真器测试PubsubIO读取,java,unit-testing,google-cloud-dataflow,google-cloud-pubsub,Java,Unit Testing,Google Cloud Dataflow,Google Cloud Pubsub,我能够设置TestPipeline和PubsubIO来使用Pubsub模拟器: options = TestPipeline.testingPipelineOptions().as(PubsubOptions.class); options.setPubsubRootUrl(pubsubUrl); 但问题是如何在单元测试时绑定PubsubIO.readMessages(),以实际进行有限测试: final PCollection<PubsubMessage> pColl

我能够设置
TestPipeline
PubsubIO
来使用
Pubsub
模拟器:

  options = TestPipeline.testingPipelineOptions().as(PubsubOptions.class);
  options.setPubsubRootUrl(pubsubUrl);
但问题是如何在单元测试时绑定
PubsubIO.readMessages()
,以实际进行有限测试:

  final PCollection<PubsubMessage> pCollection =
      pipeline.apply(PubsubIO.readMessagesWithAttributes().fromTopic("some-topic"));

  PAssert.that(pCollection).satisfies(pubsubMessages -> {
    pubsubMessages.forEach(System.out::println);
    return null;
  });

  pipeline.run();
final PCollection PCollection=
apply(PubsubIO.readMessagesWithAttributes().fromTopic(“某些主题”));
满足(pubsubMessages->{
pubsubessages.forEach(System.out::println);
返回null;
});
pipeline.run();

我正在用Direct runner使用
google cloud dataflow java sdk all
version
2.1.0

,据我所知,这目前是不可能的(我同意,这是非常不幸的)


对于Dataflow runner,您最好的选择可能是在一段时间后以编程方式启动管道上的排水。

对于Direct runner,据我所知,这目前是不可能的(我同意,这是非常不幸的)

使用Dataflow runner,最好的选择可能是在一段时间后以编程方式启动管道上的排水