При сравнении двух строк с #kotlintest с таким тестом:
"compare two strings" {
"1: one\n2: two\n3: three".shouldBe("1: one1\n22: two\n3: three")
}
результат выглядит следующим образом:
expected: "1: one1
22: two
3: three" but was: "1: one
2: two
3: three"
org.opentest4j.AssertionFailedError: expected: "1: one1
22: two
3: three" but was: "1: one
2: two
3: three"
Даже с такой короткой строкой - это довольноТрудно определить, что именно отличается между этими двумя строками. И это намного сложнее, если сравнивать более длинные строки или атрибуты объекта, поскольку в результате получается одна длинная прокручиваемая строка.
Однако - мы все очень привыкли читать «diff» - с его +/- строками,и цвета, которые мгновенно позволяют нам определить разницу.
Например, вот результат того же утверждения при выполнении rspec
(тестовая библиотека для ruby):
expected: "1: one\n22: two\n3: three"
got: "1: one\n2: two\n3: three"
(compared using ==)
Diff:
@@ -1,4 +1,4 @@
1: one
-22: two
+2: two
3: three
Как видите, это помогает мне двумя способами. Во-первых, он помещает обе строки прямо друг под другом, чтобы я мог различать уровни персонажа. Во-вторых, он показывает хороший diff
с нашей знакомой раскраской, так что я сразу вижу, что не отличается, а что отличается.
Есть ли способ добиться некоторого сравнения результатов теста, которое было бы схожим, и дало бы аналогичные преимуществачтобы быстро определить разницу?
Я пробовал KotlinTest и JUnit5 - оба результата сравнения очень «горизонтально прокручиваются в одной строке». Может быть, в некоторых других тестовых средах Kotlin?
Спасибо!