仅忽略 AssertJ 中的嵌入式成员
Ignoring only embedded member in AssertJ
我有两个 class 要用 JUnit
/Mockito
测试:
public class ClassA {
private int sk;
// getters and setters
}
public class ClassB {
private int sk;
private List<ClassA> lista;
// getters and setters
}
然后在我的测试中 class,使用 AssertJ
:
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);
问题是名称 sk
在两个 class 中都有,我只需要在 ClassA
中忽略它,而不是在 ClassB
中。这在 AssertJ
中可能吗?
根据 ignoringFields
javadoc:
Nested fields can be specified like this: home.address.street
.
...因此您的 类:
ClassB b = new ClassB(1, Arrays.asList(new ClassA(1)));
ClassB bIsEqualsExceptForNestedField = new ClassB(1, Arrays.asList(new ClassA(2)));
ClassB bIsNotEquals = new ClassB(2, Arrays.asList(new ClassA(3)));
// should succeed
assertThat(b)
.usingRecursiveComparison()
.ignoringFields("lista.sk")
.isEqualTo(bIsEqualsExceptForNestedField);
// should fail
assertThat(b)
.usingRecursiveComparison()
.ignoringFields("lista.sk")
.isEqualTo(bIsNotEquals);
我有两个 class 要用 JUnit
/Mockito
测试:
public class ClassA {
private int sk;
// getters and setters
}
public class ClassB {
private int sk;
private List<ClassA> lista;
// getters and setters
}
然后在我的测试中 class,使用 AssertJ
:
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);
问题是名称 sk
在两个 class 中都有,我只需要在 ClassA
中忽略它,而不是在 ClassB
中。这在 AssertJ
中可能吗?
根据 ignoringFields
javadoc:
Nested fields can be specified like this:
home.address.street
.
...因此您的 类:
ClassB b = new ClassB(1, Arrays.asList(new ClassA(1)));
ClassB bIsEqualsExceptForNestedField = new ClassB(1, Arrays.asList(new ClassA(2)));
ClassB bIsNotEquals = new ClassB(2, Arrays.asList(new ClassA(3)));
// should succeed
assertThat(b)
.usingRecursiveComparison()
.ignoringFields("lista.sk")
.isEqualTo(bIsEqualsExceptForNestedField);
// should fail
assertThat(b)
.usingRecursiveComparison()
.ignoringFields("lista.sk")
.isEqualTo(bIsNotEquals);