Apache Beam Java-тестирование ExpectedLogs Maven

Предоставленные ответы хороши, но я думаю, что их можно улучшить, добавив «архитектурную» перспективу.

Исследование

MVC's Controller.Json выполняет работу, но это очень плохой при предоставлении соответствующей ошибки в этом случае. Используя Newtonsoft.Json.JsonConvert.SerializeObject, ошибка указывает точно, что такое свойство, которое запускает циклическую ссылку. Это особенно полезно при сериализации более сложных иерархий объектов.

Надлежащая архитектура

Не следует пытаться сериализовать модели данных (например, модели EF), поскольку навигационные свойства ORM - это путь к гибели когда дело доходит до сериализации. Поток данных должен быть следующим:

Database -> data models -> service models -> JSON string 

Сервисные модели могут быть получены из моделей данных с использованием автоматических карт (например, Automapper ). Хотя это не гарантирует отсутствие круговых ссылок, правильная конструкция должна это делать: модели обслуживания должны содержать именно то, что требует потребитель услуг (т. Е. Свойства).

В тех редких случаях, когда клиент запрашивает иерархию с использованием одного и того же типа объекта на разных уровнях, служба может создавать линейную структуру с родительскими и дочерними отношениями (используя только идентификаторы, а не ссылки).

Современные приложения стремятся избежать загрузки сложных структур данных одновременно и модели обслуживания должны быть тонкими. Например:

  1. загружается только данные заголовка события (идентификатор, имя, дата и т. Д.) -> модель обслуживания (JSON), содержащая только данные заголовка
  2. управляемых посетителей list - доступ к всплывающей и ленивой загрузке списка -> сервисная модель (JSON), содержащая только список участников

1
задан jfernandeze 17 January 2019 в 09:09
поделиться

1 ответ

Это потому, что org.apache.beam.sdk.testing.PAssert в beam-sdks-java-core, а org.apache.beam.sdk.testing.ExpectedLogs в beam-sdks-java-core-test.

Я не думаю, что org.apache.beam.sdk.testing.ExpectedLogs опубликовано в артефактах Beam maven. Вы можете скомпилировать модуль локально с https://github.com/apache/beam и добавить его в свой проект Maven.

Чтобы скомпилировать beam-sdks-java-core-test локально, сначала вы можете cd перейти в родительский каталог Beam. Затем выполните команду ./gradlew :beam-sdks-java-core:shadowTestJar. После этого вы сможете найти банку с именем beam-sdks-java-core-2.10.0-SNAPSHOT-tests.jar в sdks/java/core/build/libs.

0
ответ дан Rui Wang 17 January 2019 в 09:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: