Это общий вопрос, касающийся болтов и штырей для тестирования модулей в топологии шторма, написанных на Java.
Какова рекомендуемая практика и руководство для болтов и дренажных аппаратов Unit-testing (JUnit?)?
Например, я мог бы написать тест JUnit для Bolt
, но без полного понимания структуры (например, жизненного цикла Bolt
) и последствий сериализации, легко сделать ошибку создания на основе конструктора не- -сериализуемые переменные-члены. В JUnit этот тест пройдет, но в топологии это не сработает. Я полностью представляю, что нужно рассмотреть множество тестовых точек (например, этот пример с сериализацией и жизненным циклом).
Поэтому рекомендуется ли вам использовать модульные тесты на основе JUnit, вы запускаете небольшую топовую топологию (LocalMode
?) и проверяете подразумеваемый контракт для Bolt
(или Spout
) в этой топологии? Или, нормально ли использовать JUnit, но подразумевается, что мы должны имитировать жизненный цикл Болта (создавая его, называя prepare()
, издеваясь над Config
и т.д.)? В этом случае, какие общие тестовые точки для тестируемого класса (Bolt/Spout) рассмотреть?
Что сделали другие разработчики в отношении создания правильных модульных тестов?
Я заметил, что существует API тестирования топологии (см. https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java). Лучше ли использовать какой-либо из этих API и встать "тестовые топологии" для каждого отдельного Bolt
и Spout
(и проверить неявный контракт, который должен предусмотреть Bolt, например, - объявленные выходы)?
Спасибо