Size: a a a

2020 December 07

VP

Vladimir Petrakovich in pro.jvm
Или вы про то, что некоторые ветвления не в вашем коде?
источник

AV

Alexei Vinogradov in pro.jvm
Vladimir Petrakovich
Или вы про то, что некоторые ветвления не в вашем коде?
В нашем.
источник

РН

Роман Нагаев... in pro.jvm
Alexei Vinogradov
Не знаю. Инстинктивно не доверяю конструкции стрима, если слишком сложные правила обработки. Как тестировать, как дебажить?
мне помогло рассматривать это в другом разрезе, не как циклы, а как потоки сообщений которые обрабатываются обработчиками, наподобие EIP
https://www.enterpriseintegrationpatterns.com/patterns/messaging/
источник

AV

Alexei Vinogradov in pro.jvm
Denis Chikanov
А как вы ищете пропущенные ветви в методе, аналогично тому, что выше, где будет
for (Element element: collection) {
if (longMethodWithbunchOfIfs(element)) { addToNewList(evenMoreLogicHere(element)) }
}
? Наличие-отсутствие стрима само по себе на ветвление кода не влияет ровно никак.
Чуть попозже нарисую пример, пока на пальцах

a.stream()
.filter()
.collect()

Покрывается одним тестом

for (x in a){
If()
Else()
}

Покрывается двумя.
источник

AV

Alexei Vinogradov in pro.jvm
Так не бывает, чтобы внезапно можно было количество тестов без потерь сократить. Или если бывает, то неочевидно как так получается.
источник

DC

Denis Chikanov in pro.jvm
Alexei Vinogradov
Чуть попозже нарисую пример, пока на пальцах

a.stream()
.filter()
.collect()

Покрывается одним тестом

for (x in a){
If()
Else()
}

Покрывается двумя.
Потому что у вас первый и второй вариант не эквивалентны, у вас  нет else-ветки поведения в стримах в таком варианте.
источник

DC

Denis Chikanov in pro.jvm
Ну то есть да, разное количество тестов, потому что вы написали семантически разный код.
источник

AV

Alexei Vinogradov in pro.jvm
Denis Chikanov
Ну то есть да, разное количество тестов, потому что вы написали семантически разный код.
Ну окей, пускай только if. Покрытие бранчей - тоже два теста минимум.

А сверху всё еще один.
источник

V

Vlad in pro.jvm
Alexei Vinogradov
Ну окей, пускай только if. Покрытие бранчей - тоже два теста минимум.

А сверху всё еще один.
Почему 2?
источник

DC

Denis Chikanov in pro.jvm
Alexei Vinogradov
Ну окей, пускай только if. Покрытие бранчей - тоже два теста минимум.

А сверху всё еще один.
Напишите сверху тест на ситуацию "ни один элемент коллекции не прошёл filter()", будут вам два теста.
источник

DC

Denis Chikanov in pro.jvm
Я уж молчу о том, что необходимость раздельных тестов на разные ветки foreach-loop'а, когда можно просто подать на вход коллекцию с элементами, часть которых соответствует условию, а часть - нет, в одном тесте, весьма сомнительна
источник

VP

Vladimir Petrakovich in pro.jvm
Alexei Vinogradov
Чуть попозже нарисую пример, пока на пальцах

a.stream()
.filter()
.collect()

Покрывается одним тестом

for (x in a){
If()
Else()
}

Покрывается двумя.
Вот про это я и говорил, что явный if уходит из вашего кода.
Но это не отличается от многих других крайних случаев, которые не так очевидны, как if.
источник

AV

Alexei Vinogradov in pro.jvm
Denis Chikanov
Напишите сверху тест на ситуацию "ни один элемент коллекции не прошёл filter()", будут вам два теста.
Если ситуация простая - я могу на глаз верно определить сколько нужно тестов. Но так в принципе покрытие как раз помогает сделать это "научно". А без покрытия - получается полностью от когнитивных способностей автора зависим.
источник

ВШ

Виктор Шиян... in pro.jvm
Artem Sokolov
Кажется частичная распаковка архива не возможна в любом случае
Спасибо
источник

H

Hello, World! in pro.jvm
Здравствуйте, например я напишу программу на java, ну или игру.
Потом когда скомпилирую, нужно будет пользователю ставить jdk?
И какую версию джавы можно юзать для коммерции бесплатно?
источник

AK

Alexander Komarov in pro.jvm
Hello, World!
Здравствуйте, например я напишу программу на java, ну или игру.
Потом когда скомпилирую, нужно будет пользователю ставить jdk?
И какую версию джавы можно юзать для коммерции бесплатно?
источник

P

Pavel in pro.jvm
Всем привет, не подскажите, Feign Client получается не умеет возвращать ResponseEntity<Something> и ничего с этим не сделать? кидает ошибку
DecodeException: Type definition error: [simple type, class org.springframework.http.ResponseEntity]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.http.ResponseEntity` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
источник

BK

Bohdan Korinnyi in pro.jvm
а для чего вам делать обвертку в ResponseEntity? вы можете сразу получить Something
источник

SP

Sergey Potekhin in pro.jvm
Pavel
Всем привет, не подскажите, Feign Client получается не умеет возвращать ResponseEntity<Something> и ничего с этим не сделать? кидает ошибку
DecodeException: Type definition error: [simple type, class org.springframework.http.ResponseEntity]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.http.ResponseEntity` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
возможно причина в том, что у класса данных нет конструктора без параметров
источник

P

Pavel in pro.jvm
Bohdan Korinnyi
а для чего вам делать обвертку в ResponseEntity? вы можете сразу получить Something
есть апи внешнего сервиса и клиент унаследовали от него
источник