在将两个字符串与#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
运行时相同的assert的结果(为ruby测试lib):
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测试框架中?
谢谢!