首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Beam似乎没有运行测试

Apache Beam似乎没有运行测试
EN

Stack Overflow用户
提问于 2020-10-31 23:48:53
回答 1查看 161关注 0票数 0

我在我的代码库上实现了一组测试,这些测试似乎没有执行,也没有通过。因此,Jacoco代码覆盖率不会报告这些测试的任何执行情况。这就是这个问题的一个例子。

代码语言:javascript
复制
package com.striiv.dataflow;

import org.apache.beam.sdk.coders.AvroCoder;
import org.apache.beam.sdk.testing.PAssert;
import org.apache.beam.sdk.testing.TestPipeline;
import org.apache.beam.sdk.transforms.Create;
import org.apache.beam.sdk.transforms.DoFn;
import org.apache.beam.sdk.transforms.ParDo;
import org.apache.beam.sdk.values.PCollection;
import org.junit.Test;

public class SampleTest {
    public final transient TestPipeline pipeline = TestPipeline.create();

    public static <T> DoFn<T, T> print(String label) {
        return new DoFn<T, T>() {
            @ProcessElement
            public void print(ProcessContext ctx) {
                String message = ctx.element().toString();
                System.out.println(message);
                ctx.output(ctx.element());
            }
        };
    }

    @Test
    public void testPrintFunctionDoesNotMutateData () {
        Object genericObject = new Object();
        PCollection<Object> collection = pipeline
                .apply(Create.of(genericObject).withCoder(AvroCoder.of(Object.class)))
                .apply(ParDo.of(print("Label")));

        PAssert.that(collection).empty();
        PAssert.that(collection).containsInAnyOrder(genericObject);
    }

}

这个测试应该会失败,因为这两个断言相互矛盾。这里我漏掉了什么?

一些信息:

代码语言:javascript
复制
$ java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (IcedTea 3.16.0) (Gentoo icedtea-3.16.0)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

<dependency>
    <groupId>org.apache.beam</groupId>
    <artifactId>beam-sdks-java-core</artifactId>
    <version>2.16.0</version>
</dependency>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-02 18:16:31

要运行它,您必须通过pipeline.run()运行它。请将其添加到您的测试方法中,如下所示,然后重试。

代码语言:javascript
复制
    @Test
    public void testPrintFunctionDoesNotMutateData () {
        Object genericObject = new Object();
        PCollection<Object> collection = pipeline
                .apply(Create.of(genericObject).withCoder(AvroCoder.of(Object.class)))
                .apply(ParDo.of(print("Label")));

        PAssert.that(collection).empty();
        PAssert.that(collection).containsInAnyOrder(genericObject);

        pipeline.run();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64623563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档