当使用#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"
即使有这么短的字符串 - 也很难发现这两个字符串之间究竟有什么不同。如果比较较长的字符串或对象属性,则要困难得多,因为结果只是一条长的可滚动行。
然而——我们都非常习惯于阅读“差异”——它的 +/- 线条和颜色,可以让我们立即发现差异。
例如,当由rspec
(test lib for 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 测试框架中?
谢谢!