Я пишу тесты JUnit для конвейера Apache Beam.Я начал использовать DoFnTester, но это устарело, хотя примеры в документации Apache Beam "Test Your Pipeline" относятся к методам, которые с тех пор устарели.
Сейчас я использую рекомендуемые TestPipeline и PAssert, но испытываю трудностис PAssert, поскольку во всех примерах, которые я видел, используются строки.
Конвейер выводит объекты, поэтому тест не проходит как сравниваемые объекты.Моим первым инстинктом было создание производного объекта и переопределение equals ().Я не мог заставить это работать (я использовал Java только пару недель, так что, возможно, это не помогло), и тест все еще вызывал оригинальный метод equals ().
Я тогдаЯ думал об итерации выходной PCollection, когда я использовал тестовый конвейер, и в конвейере было бы не более одного или двух элементов, но я не смог найти примеров того, как это сделать.Не уверен, что это все равно правильный способ тестирования.
Я прочитал документацию Apache и нашел этот комментарий "Object.equals (Object) не поддерживается на объектах PAssert. Если вы намеревались тестировать объектравенства, вместо этого используйте вариант containsInAnyOrder (T ...). "Это звучит именно то, что мне нужно, но проблема в том, что я не знаю, как создать вариант containsInAnyOrder (), чтобы сделать это, и я не смог найти никаких примеров.
У меня кончились вещи, чтобыGoogle!Многие примеры устарели (включая собственную документацию Apache), ссылаясь на методы, которые устарели.Все примеры, которые я нашел с PAssert, предполагают, что выходные элементы являются Strings.
Все, что мне нужно сделать, это переопределить containsInAnyOrder, чтобы я мог сделать свое собственное сравнение объектов.Кто-нибудь может помочь?
PAssert.that(output).containsInAnyOrder(expected);
Если бы кто-нибудь мог указать мне на некоторые примеры, которые были бы очень признательны.