RecursiveComparisonDifferenceCalculator 的 determineDifferences 方法无法比较 100 个对象的列表

determineDifferences method of RecursiveComparisonDifferenceCalculator not able to compare the list of 100 objects

提问人:Amit 提问时间:3/9/2023 最后编辑:Amit 更新时间:3/9/2023 访问量:69

问:

我希望你能给我一些建议,因为我对 Java 世界很陌生,并尝试使用 assertj-core 递归比较 API 进行对象之间的深度比较,如下所示。但是,当我们传递自定义对象的集合进行深度比较时,当它们的数量很大时,例如,即使是 50 或 100,比较也要花费很长时间,这似乎不起作用。

让我与大家分享一些要查看的代码块。

class Owner
{
   String id;
   String name;
   ArrayList<Assignment> assignments;

   Owner(String id,String name, ArrayList<Assignment> assignments)
   {
      this.id = id;
      this.name = name;
      this.assignments = assignments;
   }
}

class Assignment
{
   String assignmentName;
   String assignmentDescription;
   
   Assignment(String assignmentName, String assignmentDescription)
   {
     this.assignmentName = assignmentName;
     this.assignmentDescription = assignmentDescription;
   }
}

从上面的模型中,我生成了一个列表 100 个所有者,每个所有者有 20 个分配。同样,另一个列出了 100 个所有者,每个所有者有 20 个分配。

现在,当我开始将它们与assertj RecursiveComparisonDifferenceCalculator进行比较时,比较需要很长时间。

下面是我必须获取两个对象之间差异的示例代码。

var config = RecursiveComparisonConfiguration();
    
var difference = new RecursiveComparisonDifferenceCalculator.determineDifferences(list1owners, list2owners, config);

我尝试按如下方式设置 RecursiveComparisonConfiguration 对象的属性,但它似乎不起作用,并且比较有点卡住了。

config.ignoreCollectionOrder(false);

不确定,但我认为上面的设置会使列表比较以明智地工作索引,例如将列表的第一个对象与另一个列表的第一个对象进行比较等等,但这似乎也不起作用,并且比较仍然需要很长时间。

请指导你们可能有的所有可能的建议/解决方案,我会尽力遵循它们。

Java Maven 递归 比较 assertj

评论

0赞 Thomas Kläger 3/9/2023
为什么需要比较如此大量的对象?为什么两个具有两个或三个不同分配的所有者不足以进行单元测试?
0赞 Joel Costigliola 3/10/2023
您能否在 github.com/assertj/assertj/issues 中提出一个问题,并进行重现该行为的测试?谢谢!
0赞 Amit 3/11/2023
@JoelCostigliola感谢您的回复。我按照建议提出了一个问题。github.com/assertj/assertj/issues/2979

答: 暂无答案