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

Java 使用PAssert containsInAnyOrder()比较对象的测试管道,java,apache-beam,Java,Apache Beam,我正在为ApacheBeam管道编写JUnit测试。我开始使用DoFnTester,但这已经被弃用了,尽管ApacheBeam“测试您的管道”文档中的示例引用了后来被弃用的方法 我现在正在使用推荐的TestPipeline和PAssert,但是我在使用PAssert时遇到了困难,因为我看到的所有示例都使用字符串 管道输出对象,因此测试作为比较对象失败。我的第一反应是创建一个派生对象并重写equals()。我无法让它工作(我只使用Java几个星期了,所以可能没有帮助),测试仍然在调用最初的equa

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

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

管道输出对象,因此测试作为比较对象失败。我的第一反应是创建一个派生对象并重写equals()。我无法让它工作(我只使用Java几个星期了,所以可能没有帮助),测试仍然在调用最初的equals()方法

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

我仔细阅读了Apache文档,发现这样一条评论:“Object.equals(Object)在PAssert对象上不受支持。如果您想测试对象的相等性,请改用containsInAnyOrder(T…)的变体。”。这听起来正是我需要的,但问题是我不知道如何创建containsInAnyOrder()的变体来实现这一点,而且我找不到任何示例

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

我所需要做的就是重写containsInAnyOrder,这样我就可以进行自己的对象比较。有人能帮忙吗

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

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

覆盖对象类中的
equals
方法,以适当地比较两个对象
Assert
只是使用
equals
方法来比较对象。有关如何覆盖
等于

的信息,请参阅找到解决方案了吗?我和你一样卡住了。你能分享你的代码来说明问题吗?