Java 仅忽略AssertJ中的嵌入成员

Java 仅忽略AssertJ中的嵌入成员,java,junit,mockito,assertj,Java,Junit,Mockito,Assertj,我有两个类要用JUnit/Mockito进行测试: public class ClassA { private int sk; // getters and setters } public class ClassB { private int sk; private List<ClassA> lista; // getters and setters } 问题是名称sk在这两个类中,我只需要在ClassA中忽略它,而不

我有两个类要用
JUnit
/
Mockito
进行测试:

 public class ClassA {

    private int sk;
    // getters and setters

} 


 public class ClassB {

    private int sk;
    private List<ClassA> lista;

    // getters and setters

} 

问题是名称
sk
在这两个类中,我只需要在
ClassA
中忽略它,而不需要在
ClassB
中忽略它。这在
AssertJ
中可能吗?

根据
ignoringFields
javadoc:

可以这样指定嵌套字段:
home.address.street

…因此,对于您的课程:

ClassB=newclassb(1,Arrays.asList(newclassa(1));
ClassB bIsEqualsExceptForNestedField=新的ClassB(1,Arrays.asList(新的ClassA(2));
ClassB bIsNotEquals=newclassb(2,Arrays.asList)(newclassa(3));
//应该成功
断言(b)
.使用递归比较()
.ignoringFields(“lista.sk”)
.isEqualTo(Nestedfield除外);
//应该失败
断言(b)
.使用递归比较()
.ignoringFields(“lista.sk”)
.isEqualTo(比斯诺特奎尔斯);

我不确定是否可以将断言分为两个步骤,一个用于
ClassB.sk
,另一个用于
ClassB.lista
(忽略
sk
)。查一下..你可以用though@Nikos我无法从您的链接判断如何比较(或忽略)特定类中的字段。您可以为RecursiveAssertion字段创建自定义比较器。在这个比较器中,您将检查classB的sk键,但忽略lista中ClassA的sk键。例如,我同意Nikos的观点,为ClassA注册一个忽略sk字段的比较器。我读过关于嵌套字段的内容,但lista是一个列表,而不是一个单一的结构化字段,因此我不确定这是否可行,它需要一个类似
.ignoringFields的键(“lista.*.sk”)
   List<ClassA> lista = //... populated with list of objects of ClassA

   ClassB expected = new ClassB();
   expected.setSk(5);
   expected.setLista(lista);

   ClassB actual = getItFromTheClassToTest();   

   assertThat(actual).usingRecursiveComparison()
                    .ignoringFields("sk")  // need to ignore only classA.sk
                    .isEqualTo(expected);