Size: a a a

JPoint, Java-конференция

2018 April 26

НБ

Надежда Белан in JPoint, Java-конференция
ну во всяком случае, есть хотя бы тестирование )))  и это очень хорошо !
источник

AK

Alexander Komarov in JPoint, Java-конференция
Надежда Белан
можно мокать бд, и смотреть что на вход пришла такая-то строка с такими-то данными ....
мокать бд звучит мощно. мокать DAO-слой - еще туда-сюда
источник

PD

Phil Delgyado in JPoint, Java-конференция
Мокать DAO слой тоже довольно странно. По сути получается прослойка моков сложнее основной логики (и с большим количество ошибок). Так что прохождение тестов не будут говорить о качестве основной логики. Ну и дорого безумно.
источник

PD

Phil Delgyado in JPoint, Java-конференция
Я еще не разу не видел примера TDD для действительно сложной логики.
источник

НБ

Надежда Белан in JPoint, Java-конференция
думаю не в каждом классе есть внешние источники
источник

PD

Phil Delgyado in JPoint, Java-конференция
Ну, вот для тех классов, которые изолированы - и пишем Unit-тесты. Но их получается очень мало.
источник

PD

Phil Delgyado in JPoint, Java-конференция
Увы, но в реальной жизни большая часть бизнес-логики предполагает интеграцию с кучей внешних источников - внешних сервисов, баз данных, МQ и т.п.
источник

НБ

Надежда Белан in JPoint, Java-конференция
зачем как-то особенно тестировать mq, вы же тестируете конкретные методы, на взод пришло это ожидается получить то
источник

НБ

Надежда Белан in JPoint, Java-конференция
когда mq тогда уже интеграционные
источник

НБ

Надежда Белан in JPoint, Java-конференция
но модульными вы тестируете минимум логики, заложенной в том или ином методе
источник

PD

Phil Delgyado in JPoint, Java-конференция
Ну, вообще работа с  mq - это почти всегда всякие Future и прочие примитивы синхронизации по событиям вне класса.
источник

НБ

Надежда Белан in JPoint, Java-конференция
так в модульных это учитывать не надо
источник

PD

Phil Delgyado in JPoint, Java-конференция
А тогда содержание модульных становится пустым.
источник

DS

Dmitriy Startsev in JPoint, Java-конференция
Phil Delgyado
Я еще не разу не видел примера TDD для действительно сложной логики.
Потому что TDD как раз помогает сдерживать сложность в разумных рамках.
источник

PD

Phil Delgyado in JPoint, Java-конференция
Эээ, пока таких примеров тоже не видел. Усложнение структур данных для TDD - видел.
А вот уменьшение сложности именно из-за TDD - ни разу.
источник

PD

Phil Delgyado in JPoint, Java-конференция
А вот уменьшение сложности из-за необходимости поддерживать интеграционное тестирование и разработки через пример использования - видел, это да )
Но к TDD это не имеет отношения.
источник

AT

Alexey Tomin in JPoint, Java-конференция
Phil Delgyado
А тогда содержание модульных становится пустым.
С одной стороны- надо делить бизнес-логику на части.
Т.е. метод "когда по шине получили такое сообщение то послать в другие шины другие сообщения" достаточно легко делатится на части "метод получает объект сообщения и возвращает список пар очередь-сообщение".
Вот когда надо "сбегать в БД и получить данные"- тут сложнее. И чтобы не мочить БД приходится писать кучу сервисов "дай объект по фильтрам", которые либо бегают в БД, либо в мапу/инмемори БД/...
Главне- как говорит Егор- писать не моки а стабы :D
источник

PD

Phil Delgyado in JPoint, Java-конференция
Вот когда в логике вместо нормальных бизнес-сущностей появляются всякие "списке пар очередь-сообщение", поддерживать код становится страшно.
Сила Java в строгой типизации и поддержки IDE. Любые попытки сделать из Java какой-нибудь javascript (ради практик, из динамических языков и пришедших) приводят к страшным последствиям.
источник

PD

Phil Delgyado in JPoint, Java-конференция
Дай объект по фильтрам мочить легко (и обычно не нужно). А вот изменить объект в транзакции и корректно обработать возможные проблемы - уже мочить сложно и, обычно, вредно.
источник

PD

Phil Delgyado in JPoint, Java-конференция
И не понятно, ради чего )
источник