首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache是删除了StreamOperatorTestHarness类,还是转移到了不同的工件上?

Apache是删除了StreamOperatorTestHarness类,还是转移到了不同的工件上?
EN

Stack Overflow用户
提问于 2022-08-01 21:03:24
回答 1查看 93关注 0票数 1

我使用intellij、maven 3和flink 1.15.1编写有状态流作业。我正在尝试为我的自定义KeyedProcessFunction编写单元测试,并尝试遵循文档这里以及添加提到的这里的依赖项。我对使用KeyedOneInputStreamOperatorTestHarness类很感兴趣,但是在我的任何依赖项中都找不到这个类(下面发布的修改后的pom )。我唯一能找到这门课的方法就是

代码语言:javascript
复制
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_2.12</artifactId>
            <version>1.14.5</version>
            <scope>test</scope>
            <type>test-jar</type>
        </dependency>

这是上一个版本的。Flink >= 1.15.0现在不需要scala相关库,因此对于1.15.1没有flink流-java_2.12。

我想要使用的类是移到其他地方还是故意被排除在外?我已经尝试过我所知道的所有google,并且我可以在flink回购中找到这个类,但在我迄今为止尝试过的任何一个flink依赖项中,除了那个<=1.14.5依赖项之外,我都找不到。我是做错了什么还是遗漏了一些文件?使用1.14.5库是我唯一的选择,还是有一些我不知道的新类型的测试实用程序?

没有类的Pom依赖关系:

代码语言:javascript
复制
...
        <flink.version>1.15.1</flink.version>
...
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-kafka</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-test-utils</artifactId>
            <version>${flink.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-test-utils-junit</artifactId>
            <version>${flink.version}</version>
            <scope>test</scope>
        </dependency>
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 02:48:03

我似乎已经弄明白了,但我的专家知识有限,所以我不知道利弊是什么。另外,我想flink的未来版本会改变这一点。好处是,我可以使用最新的flink版本,而不包括在旧代码中。

我为测试添加了这些依赖项(至少1.15.1 ):

代码语言:javascript
复制
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-test-utils</artifactId>
            <version>${flink.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java</artifactId>
            <version>${flink.version}</version>
            <scope>test</scope>
            <classifier>tests</classifier>
            <type>test-jar</type>
        </dependency>

我遇到了关于工件和分类器标记的flink自述,我知道我需要的类在flink流-java包中,特别是在它的测试部分。因此,使用<classifier>tests</classifier>标记包括对flink流-java的依赖,使得测试类可用。

不管它的价值如何,医生有一个神秘的警告:

当用户应该使用Flink测试依赖项时,非常有用。这主要是为了测试线束,可能不是你想要的。

我仍然需要它提供的模拟运行程序的flink测试实用程序。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73199594

复制
相关文章

相似问题

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