ProtoTruth’s #ignoringFields
method accepts integer field numbers, so
supplying field numbers from the wrong protocol buffers is possible. For
example:
message Bar {
optional string name = 1;
}
message Foo {
optional string name = 1;
optional Bar bar = 2;
}
void assertOnFoo(Foo foo) {
assertThat(foo).ignoringFields(Bar.NAME_FIELD_NUMBER).isEqualTo(...);
}
This will ignore the Foo#name
field rather than Bar#name
. The field number
can be turned into a Descriptor
object to resolve the correct nested field to
ignore:
void assertOnFoo(Foo foo) {
assertThat(foo)
.ignoringFieldDescriptors(
Bar.getDescriptor().findFieldByNumber(Bar.NAME_FIELD_NUMBER))
.isEqualTo(...);
}
Suppress false positives by adding the suppression annotation @SuppressWarnings("ProtoTruthMixedDescriptors")
to the enclosing element.