比较2个对象忽略空值

问题描述 投票:1回答:2

该项目使用TestNg,Java11,Spring测试

我正在为API编写testNG测试我有一个具有这种结构的java对象:

class Object1
    private Object2 o2;
    private List<Object3> o3;

Object2不仅由基本属性组成。

我想测试2 Object1是否等于这些规则:

  • 如果实际的o2为空,即使另一个o2不是,也不要失败
  • 如果实际的o3为空或为空,即使另一个o3不是,也不要失败
  • 如果实际的o3不为空也不为空,则仅比较非空的Object3字段

总而言之,我想断言两个对象是相同的,递归地忽略空字段。

我可以做到

assertThat(actual).usingRecursiveComparison().ignoringActualNullFields().isEqualTo(other);

但是递归的空字段不会被忽略。

我该如何解决?

java assertj
2个回答
0
投票

您也可以忽略expected null fields.

您还可以提供简单的测试来重现该问题吗?随时在https://github.com/joel-costigliola/assertj-core/issues中提出问题


0
投票

对我来说,以下代码有效:

public class SocialLink {
    private String platform;
    private String link;
}

SocialLink obj1 = new SocialLink("Facebook", null);
SocialLink obj2 = new SocialLink("Facebook", null);

assertThat(obj1).isEqualToIgnoringNullFields(obj2);
© www.soinside.com 2019 - 2024. All rights reserved.