我使用intellij、maven 3和flink 1.15.1编写有状态流作业。我正在尝试为我的自定义KeyedProcessFunction编写单元测试,并尝试遵循文档这里以及添加提到的这里的依赖项。我对使用KeyedOneInputStreamOperatorTestHarness类很感兴趣,但是在我的任何依赖项中都找不到这个类(下面发布的修改后的pom )。我唯一能找到这门课的方法就是
<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依赖关系:
...
<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>
...发布于 2022-08-02 02:48:03
我似乎已经弄明白了,但我的专家知识有限,所以我不知道利弊是什么。另外,我想flink的未来版本会改变这一点。好处是,我可以使用最新的flink版本,而不包括在旧代码中。
我为测试添加了这些依赖项(至少1.15.1 ):
<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测试实用程序。
https://stackoverflow.com/questions/73199594
复制相似问题