Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单元测试端输出_Java_Unit Testing_Google Cloud Dataflow_Apache Beam - Fatal编程技术网

Java 单元测试端输出

Java 单元测试端输出,java,unit-testing,google-cloud-dataflow,apache-beam,Java,Unit Testing,Google Cloud Dataflow,Apache Beam,我正在使用Apache Beam对ParDo函数进行单元测试,该函数有1个主输出和1个侧输出: public class GetPubsubMessageDoFn extends DoFn<PubsubMessage, PubsubPayload.PubsubPayloadDTO> { @ProcessElement public void processContext(ProcessContext processContext) { PubsubPayload p

我正在使用Apache Beam对ParDo函数进行单元测试,该函数有1个主输出和1个侧输出:

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
  }
}
公共类GetPubsubMessageDoFn扩展了DoFn{
@过程元素
public void processContext(processContext processContext){
PubsubPayload PubsubPayload=新的PubsubPayload(processContext.element());
processContext.output(pubsubPayload.getPayload());//主输出
processContext.output(ORIGIN_PATH_TUPLE_标记,GCSUtils.toGSURL(pubsubPayload.getPayload().bucket,pubsubPayload.getPayload().name));//侧输出
}
}
我设置了一个单元测试类,用于测试主输出和侧输出:

 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
public类getPubSubMessageDofTest{
私有dofn测试仪getPubsubMessageDoFn;
专用注射器;
私有最终TupleTagList标记=TupleTagList.of(PUBSUB\u PAYLOAD\u DTO\u TUPLE\u标记)和(ORIGIN\u PATH\u TUPLE\u标记);
@以前
公共作废设置(){
injector=Guice.createInjector(新的GetPubsubMessageTestModule());
this.getPubsubMessageDoFn=DoFnTester.of(injector.getInstance(getPubsubMessageDoFn.class));
this.getPubsubMessageDoFn.setOutputTags(标记);//不编译
}
//测验

根据需要,我应该能够使用
setOutputTags(标签)设置侧面输出
只有该函数在
DoFnTester
类中不存在。我使用的是2.1.0版,它确实使用了Apache Beam的一部分功能,但即使查看了有关
setOutputTags
的Apache Beam参考文档,也没有列出(尽管在介绍中再次提到).

这些方法在2.1.0中不可用。事实上,DoFnTester正在被弃用,请参阅

建议使用TestPipeline和DirectRunner在其DoFn上测试ParDo。您可以使用TestStream小心地控制输入流。请参阅有关此主题的详细信息