Pull to refresh

Comments 7

AssertJ… Интеграция: нет <Click to see difference>

Хм, у меня есть:

А какая у вас версия IntelliJ?

Вот как выглядит у меня что в Community 2020.1.2, что в 2019.3.3


Скриншот

image

Проверял и в 2020.2 Beta, и 2020.1.2.


Но дело, похоже, в другом: у вас выбрасывается исключение org.opentest4j.AssertionFailedError. Если я добавлю зависимость testImplementation "org.opentest4j:opentest4j:1.2.0", то у меня становится так же, без "Click to see difference". Но без этой зависимости тест выбрасывает org.junit.ComparisonFailure, и идея это парсит нормально. Если что, зависимости выглядят так:


dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    testCompile group: 'junit', name: 'junit', version: '4.12'
    testImplementation "org.assertj:assertj-core:3.16.1"
//    testImplementation "org.opentest4j:opentest4j:1.2.0"  // с этим не будет "Click to see difference"
}

Занятно, на это даже есть тикет у AssertJ. Вечером посмотрю, т.к. opentest4j в проекте идет от junit-jupiter-engine и не очень понятно, как правильно от этого избавиться.

ookami_kb
Судя по всему, вы запускаете с использованием JUnit4. В нем действительно оборачивается простой ассерт в org.junit.ComparisonFailure. Однако ассерт чуть посложнее уже не будет оборачиваться:


Скриншот

image


С JUnit5 ситуация чуть повеселее. Есть баг в IntelliJ, суть которого в том, что интеграция не всегда работает, если запускать тесты через gradle (как это раньше делал я). И еще один связанный баг зарелизят в следующей версии.


В итоге если запускать тесты не через gradle, а через Idea (настраивается это через Settings → Build, Execution, Deployment → Gradle → Run tests using), то и в JUnit5 будет показываться сравнение, но только для простого isEqualTo:


Скриншот

image


Спасибо за ваше замечание, узнал много интересного:)

expectThat(haystack).not().contains(needle)

Большинство библиотек так или иначе пытаются мимикрировать под человечный язык, оставляя, однако, за бортом тот факт, что последний изначально был задуман для соблазнения самок (согласно одной из теорий) и плохо подходит для лаконичных и четких высказываний, которыми оперируем мы, роботы :) Поэтому чем больше требуется иностранных букав, чтобы описать простое выражение, тем хуже общая читаемость и вдупляемость кода.

Sign up to leave a comment.

Articles

Change theme settings