Size: a a a

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

2020 May 20

AC

Anton Chistyakov in JPoint, Java-конференция
Kirill Romanov
Тут скорее нужна более продвинутая библиотека матчеров, типа AssertJ
Мне почему-то кажется, что её мало. Более того, означенные в списке инструменты будут недостаточны просто в силу дизайна. Одно дело написать свой junit, но с более красивыми рюшечками, другое dsl для тестинга и нормально его поддержать.
источник

AC

Anton Chistyakov in JPoint, Java-конференция
Alexei Vinogradov
Забавный момент. Есть такая вещь - темплейты. Например Apache FreeMarker (ftl), Java. И в этих темплейтах частенько полно логики, которую полезно покрывать юнит тестами.
Как проверить coverage таких тестов? Не нашел сейчас на вскидку инструментов, хотя проблема то довольно общая.

Какие-то идеи?

Ну кроме - "логика в темплейтах - зло".

Для старожилов - когда-то что-то похожее делали jsp. (и там тоже быстро пришли к выводу - логика в jsp это зло)
"логика в темплейтах зло!" 🤘 :)

вангую, что инструментов нет, тк. общая проблема для ftl users && те, кто ftl  тестируют && тех, кого интересует coverage(!) - преобразуется в проблему для <10 человек в мире ( моя, возможно, неправильная оценка)  => мало энтузиастов, кто напишет.

> Какие-то идеи?
если хочется заморочиться - свой инструмент...
как работает coverage, если по простому:
 - инструментирует код по веткам исполнения, расставляет там свои "маркеры"
 - при запуске тестов отмечает те ветки, в которые зашли
 coverage percent = число отмеченных / к общему "маркеров"
Соответственно,
 - генерим темплейты по темплейтам, с "маркерами" ... хорошо, правда? =)
 - по проходу отмечаем, что пройдено ...
 profit(?) =)
помог ли? )
источник

OE

Oleg Estekhin in JPoint, Java-конференция
Alexei Vinogradov
в JUnit5 он точно не появилось и не появится :).

Думаю, что да нужно допиливать матчеры -
assertThat(books.get(1)).isEqualTo("War and peace");

что бы при ошибке выдавал не только books.get(1).toString() но и books.toString()  и т.д.

И это вообще нетривиально на первый взгляд, если вообще возможно с Java
если вместо таких матчеров использовать что-то типа assertThat(list).contains(item,item,...), то при фейле можно показывать не только фейленный элемент, но и сам список
источник

OE

Oleg Estekhin in JPoint, Java-конференция
соответственно, такое можно добавить и в хамкрест и в assert4j
источник

AV

Alexei Vinogradov in JPoint, Java-конференция
Anton Chistyakov
"логика в темплейтах зло!" 🤘 :)

вангую, что инструментов нет, тк. общая проблема для ftl users && те, кто ftl  тестируют && тех, кого интересует coverage(!) - преобразуется в проблему для <10 человек в мире ( моя, возможно, неправильная оценка)  => мало энтузиастов, кто напишет.

> Какие-то идеи?
если хочется заморочиться - свой инструмент...
как работает coverage, если по простому:
 - инструментирует код по веткам исполнения, расставляет там свои "маркеры"
 - при запуске тестов отмечает те ветки, в которые зашли
 coverage percent = число отмеченных / к общему "маркеров"
Соответственно,
 - генерим темплейты по темплейтам, с "маркерами" ... хорошо, правда? =)
 - по проходу отмечаем, что пройдено ...
 profit(?) =)
помог ли? )
Потихоньку выясняется, что эта
же проблема есть так же в большинстве современных js frontend framework-ах. Почти все используют темплейты, в которых можно использовать логику. А от можно до использовать - мгновения :)

Так что юзеров наверное- миллионы
источник
2020 May 21

T

Tagir in JPoint, Java-конференция
Alexei Vinogradov
в JUnit5 он точно не появилось и не появится :).

Думаю, что да нужно допиливать матчеры -
assertThat(books.get(1)).isEqualTo("War and peace");

что бы при ошибке выдавал не только books.get(1).toString() но и books.toString()  и т.д.

И это вообще нетривиально на первый взгляд, если вообще возможно с Java
На чистой джаве этого не сделаешь, для этого специально груви придумали (привет Баруху)
источник

T

Tagir in JPoint, Java-конференция
Кто-нибудь смотрел? Имеет смысл время тратить?
источник

IU

Ivan Ugliansky in JPoint, Java-конференция
смотрел, норм
источник

T

Tagir in JPoint, Java-конференция
Спасибо, тоже посмотрю тогда
источник

КШ

Коля Шипяков... in JPoint, Java-конференция
@Tagir_Valeev а вас в онлайн увидим с чем нибудь интересным или только на ЖПоинте?
источник

AV

Alexei Vinogradov in JPoint, Java-конференция
Tagir
На чистой джаве этого не сделаешь, для этого специально груви придумали (привет Баруху)
А на Котлине?
источник

VS

Vladimir Sitnikov in JPoint, Java-конференция
Tagir
На чистой джаве этого не сделаешь, для этого специально груви придумали (привет Баруху)
Сделаешь, сделаешь. Норм там всё.
источник

T

Tagir in JPoint, Java-конференция
Vladimir Sitnikov
Сделаешь, сделаешь. Норм там всё.
Я имею в виду конкретно с таким синтаксисом не сделаешь. Надо эти уродские матчеры писать
источник

AV

Alexei Vinogradov in JPoint, Java-конференция
Vladimir Sitnikov
Сделаешь, сделаешь. Норм там всё.
Как будет выглядеть?

Пока максимум что придумалост:
assertThat(books).get(1).isEqual("xx")

где get() не из коллекции, а из специального гибрида коллекшн+матчер)
источник

KR

Kirill Romanov in JPoint, Java-конференция
Собственно, похожим образом выглядят матчеры для полей в объектах.
assertThat(person).extracting("name").isEqual("Name")
источник

KR

Kirill Romanov in JPoint, Java-конференция
нет никакой проблемы добавить вариант с извлечением по индексу из списка
источник

VS

Vladimir Sitnikov in JPoint, Java-конференция
Tagir
Я имею в виду конкретно с таким синтаксисом не сделаешь. Надо эти уродские матчеры писать
Можно я хоть чуть-чуть на доклад оставлю? 🙂
источник
2020 May 22

NK

ID:0 in JPoint, Java-конференция
Через час начнется онлайн-встреча JUG.ru c Себастианом Дашнером «Cloud-native Java for this decade with Quarkes»

Трансляция по ссылке: https://meetup.jugru.org/java-jug-cloud-native-java-for-this-decade-quarkus
источник

IZ

Ivan Zemlyankiy in JPoint, Java-конференция
ID:0
Через час начнется онлайн-встреча JUG.ru c Себастианом Дашнером «Cloud-native Java for this decade with Quarkes»

Трансляция по ссылке: https://meetup.jugru.org/java-jug-cloud-native-java-for-this-decade-quarkus
Можно Вас попросить вставлять ссылку на чатик с вопросами в описание к трансляции на ютубе? Просто для меня это был челендж найти нужный чат
источник

ВВ

Виктор Вербицкий... in JPoint, Java-конференция
+1
источник