gpt4 book ai didi

java - 使用 PAssert containsInAnyOrder() 比较对象的测试管道

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:04 27 4
gpt4 key购买 nike

我正在为 Apache Beam 管道编写 JUnit 测试。我开始使用 DoFnTester,但它已被弃用,尽管 Apache Beam“测试您的管道”文档中的示例引用了已被弃用的方法。

我现在正在使用推荐的 TestPipeline 和 PAssert,但我在使用 PAssert 时遇到困难,因为我看到的所有示例都使用字符串。

管道输出对象,因此测试作为其比较对象失败。我的第一直觉是创建一个派生对象并覆盖 equals()。我无法让它工作(我只使用 Java 几个星期,所以这可能没有帮助)并且测试仍在调用原始的 equals() 方法。

然后我想到在使用测试管道时迭代输出 PCollection,并且管道中最多只有一个或两个元素,但我找不到如何执行此操作的任何示例。不确定这是否是正确的测试方法。

我通读了 Apache 文档并发现此评论“PAsert 对象不支持 Object.equals(Object)。如果您打算测试对象相等性,请改用 containsInAnyOrder(T...) 的变体。 ”。这听起来正是我所需要的,但问题是我不知道如何创建 containsInAnyOrder() 的变体来执行此操作,而且我找不到任何示例。

我已经没有东西可以谷歌了!许多示例都已过时(包括 Apache 自己的文档),引用了已弃用的方法。我在 PAssert 中找到的所有示例都假定输出元素是字符串。

我需要做的就是覆盖 containsInAnyOrder,这样我就可以进行自己的对象比较。谁能帮忙?

PAssert.that(output).containsInAnyOrder(expected);

如果有人能指出一些例子,我将不胜感激。

最佳答案

覆盖对象类中的 equals 方法以适本地比较两个对象。 Assert 只是使用 equals 方法来比较对象。引用this page了解如何覆盖 equals

关于java - 使用 PAssert containsInAnyOrder() 比较对象的测试管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50405891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com