|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 а также нельзя протестировать взлет и посадку- а лишь получить динамический коэф сопротивления))) Которого вполне достаточно чтобы судить о взлете и посадке. Т.к. в аэродинамической трубе моно протестировать и подъёмную силу. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 11:51 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein, Это нельзя. Либо клиент не шлет вам всякую херню, либо это БЛ и вы всякую херню пропускаете в валидатор слоя БЛ и приводите к нормальному виду. То есть требуется сущность Юзверь а вам присылают json Футболист. Вот вы в слое БЛ конвертите его в другую сущность. И тест на конвертацию класса одного в другой. Причем тут маппинг? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 11:59 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein, Почему по контракту приход сущности юзверь, а приходит Футболист? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 12:01 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Timein, Это нельзя. Либо клиент не шлет вам всякую херню, либо это БЛ и вы всякую херню пропускаете в валидатор слоя БЛ и приводите к нормальному виду. То есть требуется сущность Юзверь а вам присылают json Футболист. Вот вы в слое БЛ конвертите его в другую сущность. И тест на конвертацию класса одного в другой. Причем тут маппинг? Я вполне могу путаться в терминологии. С моей точки зрения это реально просто маппинг - из полей одного объекта в поля другого объекта. Ну не знаю, давайте Converter назовем, если маппер под такое не подходит Если подкините какую-нибудь хорошую статью по архитектуре (правильному разбиению на классы и слои) приложений типа "получить данные - преобразовать данные - положить в базу", буду рад ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 12:12 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein, Точной границы маппинга и конвертера нету. Увы. Имхо если аннотации простые вкл, выкл то маппинг. Если сложнее то бери как есть и внизу на бэке конвертируй. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 12:20 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein mayton, Я могу путаться в терминологии. Я правильно понимаю, что предполагается: 1) поля StructuredJavaObject впрямую переложить в PlainJavaObject1 (как есть, один к одному) 2) Из PlainJavaObject1 переложить с обработкой в PlainJavaObject2 (так как состав полей может не совпадать) Да. Но я говорю предложение по реализации исходя только из твоих слов. Исходника не видел. А он может прояснить больше деталей. Может есть и еще более простое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 14:05 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein Тема интересная. Позвольте мне тоже тогда позадавать пару вопросов: 1. Есть у нас маппер. На входе у него объект, полученный из xml - все уровни вложенности исходной xml в объекте сохранены, на выходе - плоская entity для базы. У входного объекта около 50-60 полей (так сложилось). Поля перекладываются со всякими разными обработками - много if'ов (если это и это поле заполнены, то заполни поле так-то), каких-то обработок строк, дат и т.д. Для удобства навигации по классу все обработки разбиты на методы согласно вложенности xml (ну, в разумных пределах). И эти методы приватные. С одной стороны понятно, что можно тестировать через public метод маппера, но тогда проверка правильности обработки какого-нибудь глубоко вложенного поля весьма затратно по времени (надо ведь до этого поля еще по всем условиям добраться) С другой стороны, если написать тесты на каждый метод отдельно (например с использованием библиотечки WhiteBox), то это позволяет проверить маппинг конкретных полей быстрее и проще TimeinВот как лучше все же поступать? (Хотя вы тут 8 страниц обсуждали, что тестить private методы - это фуфу =) )Часть этих восьми страниц - это как раз спор о том "это фуфу" или это просто "меньшее из зол". Этот вопрос не был решен, и стороны не согласны. На мой пример тоже никто не смог придумать как удобно протестировать и одновременно сохранить инкапсуляцию.. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 14:23 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, >Это тоже хороший пример когда ради удобного тестирования прийдется нарушать инкапсуляцию. = я бы написал, ради удобного тестирования надо убрать архитектурные косяки в проекте) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 14:29 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Часть этих восьми страниц - это как раз спор о том "это фуфу" или это просто "меньшее из зол". Этот вопрос не был решен, и стороны не согласны. На мой пример тоже никто не смог придумать как удобно протестировать и одновременно сохранить инкапсуляцию.. Ты про собственные рукотворные хеш-таблицы? Я думаю что для 80% бизнес-кода (который тут обычно обсуждают) должен следовать принципу SingleResponsibility и этот вопрос решен автоматом. Автор выше хотел сделать несколько ответсвтенностей на одном классе и понял что растет сложность тестирования. Комбинаторно растет. Оставшиеся редкие артефакты.... как-то твои хеш-таблички или мои графы или еще бох знает какие тонкие материи дейтвительно можно взламывать, инструментировать и достигать каких-то своих целей. В языках наподобие С++ для этого есть пре-процессор или макро-процессор. А у нас... ну вот у нас всякие подлые штучки типа Мокито. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 14:32 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
maytonТы про собственные рукотворные хеш-таблицы?Нет, я про проблему с командами для роботов. maytonА у нас... ну вот у нас всякие подлые штучки типа Мокито.Во-первых, мокито нарушает инкапсуляцию еще больше чем открытие private методов (мы знаем какой конкретно метод какой код будет вызывать). А во-вторых.. я в принципе не понимаю причем он тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 15:07 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Ну вот. Когда нет конкретики, нет и разговора для обсуждения. Нечего обсуждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 15:16 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
А что за команды для роботов? Сорян.. я видимо где-то пропустил. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 15:18 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
если уж говорить о тестиовании приватных методов -и возникла такая необходимость обявить их пекейдж приватными я у себя как раз так и сделал ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 15:32 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 Lelouch asv79, Ладно, вот какой-то (не очень хороший, например захардкодил имя образа) пример с testcontainers. Примерно за 1 час и сделал (основная проблема была не в докере, я с запросом ошибся XD) Запуск с тестами - mvn verify P.S. мне честно лень делать пример с docker compose + Maven, по идее можно начинать копать с вот этого плагина: https://dmp.fabric8.io. Ну или например: https://github.com/daggerok/docker-compose-maven-plugin-example то что вы сделали делается одной анотацией @DataJpaTest за одну минуту вопрос был как затетист цепочку из реста+ кафка+ репа Ну то есть поднять ещё 1 контейнер с Кафка вы по этому примеру не можете? И да, расскажите ка, как с помощью dataJpaTest протестировать rest api. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2021, 22:10 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Вот выше советовали EmbedKafka. Вот Баелдунг пишет очередную статью на тему такого тестинга в Spring-application https://www.baeldung.com/spring-boot-kafka-testing По моему вполне себе удобно. Девопсовские вопросы... всякие там брокеры, кластеры, ЗУ-киперы, репликации нагрузки и SLA и перформанс можно другой темой толкнуть. Кто за? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2021, 15:36 |
|
|
start [/forum/topic.php?fid=59&msg=40080086&tid=2120410]: |
0ms |
get settings: |
24ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
357ms |
get tp. blocked users: |
3ms |
others: | 369ms |
total: | 868ms |
0 / 0 |