Сравните две строки и покажите результаты с помощью diff - который позволяет быстро определить разницу - PullRequest
1 голос
/ 10 ноября 2019

При сравнении двух строк с #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?

Спасибо!

...