Pull to refresh

Comments 13

А почему не такое?
assertThat("expected").isEqualTo(actual);

Потому что предполагаемая концепция использования. С точки зрения прошёл/не прошёл тест разницы нет, но при разборе почему не прошёл, сильно помогают сообщения, формируемые асертами. А вот в них уже будет

org.opentest4j.AssertionFailedError: 
expected: "actual"
 but was: "expected"

Что при более сложных проверках может вводить в заблуждение.

Сможете сходу вспомнить порядок следования expected и actual?

AssertJ by design лишён этой проблемы

Я думаю, это была отсылка к этой части

Вы правы. В обоих случаях непонятно, где actual, а где expected.
Тут среда рзработки обычно помогает подсказками, да и при частом использовании запоминаешь порядок.

Концепция большинства тестов достаточно простая: вызвал метод, получил результат, проверил результат.

В assertThat() можно передать только один параметр - результат, который будем проверять. Это достаточно интуитивно. Я пока что не встречал разработчиков, у которых с этим бы возникли проблемы.

assertEquals() из JUnit противоречит концепции "чистого кода" - два параметра одинакового типа, которые легко перепутать местами, и код скомпилируется. В большинстве случаев это не проблема, но иногда мешает: читать логи упавшего теста в CI-пайплайне (особенно когда локально тест проходит) или на code review, когда один разработчик поучает другого правильно использовать assertEquals.

Потому что цепочка будет проверять ожидаемое значение, а не актуальное.

Представьте assertThat(123).isNotNull().isEqualTo(var);

Нет, спасибо, нам достаточно TestNG, мы не голодные.

Не цепляйтесь за устаревающие проекты. Hamcrest не радует нас новыми версиями с октября 2019. Просто замените его более современным решением:

Но почему это проблема, что он не обновлялся (если конечно там нет критических багов)? Это какой-то js подход получается, где обязательно нужно самый новый фреймворк, а все, что старше полугода, ужасное легаси?

И забавно тоже, что пример с Hamcrest совпадает практически слово в слово с AssertJ.

Я бы порекомендовал добавлять описание ошибки. Вот у нас я автомачу мобильные тесты один, а юзают их все манульщики. И писать 2 <> 3 не совсем ясно, что такое 2 и почему 3. Ошибки должен понимать человек кто видит продукт первый раз.

И еще я не вижу мягкие ассерты, которые не останавливают тест. Это очень удобно когда тест флоу бежит до конца и накапливает сбор мелких ошибок.

Так много категоричных утверждений) А что вам это дало? Много народу уволилось, когда самодур начальник стал заставлять их делать всё только его любимой и единственно правильной библиотекой и никак иначе?

Вы знаете, никто не уволился) Опробовано в двух разных организациях на двух разных командах. Адекватные люди не спешат навешивать на других ярлыки и, тем более, увольняться из-за нового инструмента, который внедряется.

Сопротивление новому - черта, свойственная любому человеку. AssertJ - капля в море. Внедрение checkstyle, например, вызывает гораздо большее сопротивление, но даже оно преодолимо без потерь.

Я правильно понимаю, что вы мне карму минусанули и неадекватным назвали, из-за того что, я усомнился в сверзполезности и категоричности перехода с junit4 на junit5?) Какие критерии полезности перехода?

Sign up to leave a comment.

Articles

Change theme settings