Тестовый конвейер, сравнивающий объекты с помощью PAssert containsInAnyOrder () - PullRequest
0 голосов
/ 18 мая 2018

Я пишу тесты 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);

Если бы кто-нибудь мог указать мне на некоторые примеры, которые были бы очень признательны.

1 Ответ

0 голосов
/ 24 января 2019

Переопределите метод equals в классе вашего объекта, чтобы соответствующим образом сравнить два объекта.Assert просто использует метод equals для сравнения объектов.Обратитесь к этой странице , чтобы узнать, как переопределить equals.

...