Я пытаюсь покрыть тестами Apache Функция луча, которая возвращает принимает и возвращает KV:
public class ChangeKeyFn extends DoFn<KV<String, CoGbkResult>, KV<String, CoGbkResult>> {
@ProcessElement
public void processElement(@Element KV<String, CoGbkResult> element, OutputReceiver<KV<String, CoGbkResult>> receiver) {
...
}
}
PAssert.that(output).containsInAnyOrder(...)
Но всегда с ошибкой утверждения. Однако я уверен, что эта функция работает правильно.
Caused by: java.lang.AssertionError:
Expected: iterable over [<KV{val1, [[{col2=val2, col1=val1}], [{colB=valB, colA=valA}]]}>] in any order
but: Not matched: <KV{val1, [[{col2=val2, col1=val1}], [{colB=valB, colA=valA}]]}>
Скорее всего root причина того, что CoGbkResult не переопределяет метод равных:
CoGbkResult gbkRes = CoGbkResult.of(new TupleTag<String>("tuple1"), Collections.singletonList( "string1" ));
CoGbkResult gbkRes2 = CoGbkResult.of(new TupleTag<String>("tuple1"), Collections.singletonList( "string1" ));
assertTrue(gbkRes.equals(gbkRes2));
Есть ли причина для CoGbkResult не переопределять метод равных? Как использовать CoGbkResult с PAssert.containsInAnyOrder?