【问题标题】:How see the difference in scala test result?如何查看 scala 测试结果的差异?
【发布时间】:2018-04-26 00:17:07
【问题描述】:

我已经编写了一个 Scala 测试用例并运行它:

sbt > test

它失败了,这很好。我对 diff 的输出有疑问,因为它基本上只是:

[String] did not match [String]

让我来找出不同之处。特别是。当比较两个Seq 时,很难阅读并找到问题,例如:

[info]   List(CruisePrice(aid,de,Wed Feb 15 00:00:00 CET 2017,Wed Mar 01 00:00:00 CET 2017,sailId,2000,3000,true,2,0,0,0,1000,2500.0,3000.0,SOME_RATE_CODE,SOME_RATE_DESCRIPTION,EUR,Sun Jan 01 00:00:00 CET 2017), CruisePrice(aid,de,Wed Feb 15 00:00:00 CET 2017,Wed Mar 01 00:00:00 CET 2017,sailId,9001,3000,true,2,0,0,0,9000,2500.0,3000.0,SOME_RATE_CODE,SOME_RATE_DESCRIPTION,EUR,Sun Jan 01 00:00:00 CET 2017)) did not equal List(CruisePrice(aid,de,Wed Feb 15 00:00:00 CET 2017,Wed Mar 01 00:00:00 CET 2017,sailId,9001,3000,true,2,0,0,0,9000,2500.0,3000.0,SOME_RATE_CODE,SOME_RATE_DESCRIPTION,EUR,Sun Jan 01 00:00:00 CET 2017)) (OverrideTest.scala:104)

有没有一种方法可以配置 scala 测试,使其更具人类可读性,从而提供更类似于单词差异的体验,而无需解析大量文本?

或者我可以使用不同的方式来断言它吗?就目前而言,我正在使用FlatSpec

assert(seq1 == seq2)

【问题讨论】:

标签: scala testing sbt diff


【解决方案1】:

您可以使用assertEquals(obj1, obj2) 来比较两个字符串。 assertEquals 使用 equals 方法进行比较。还有一个不同的断言 assertSame,它使用 == 运算符。

要了解为什么 == 不应该与字符串一起使用,您需要了解 == 的作用:它进行身份检查。也就是说,a == b 检查 a 和 b 是否引用同一个对象。它是语言中内置的,它的行为不能被不同的类改变。另一方面,equals 方法可以被类覆盖。虽然它的默认行为(在 Object 类中)是使用 == 运算符进行身份检查,但包括 String 在内的许多类都会覆盖它以进行“等效”检查。在 String 的情况下,a.equals(b) 不是检查 a 和 b 是否引用同一个对象,而是检查它们引用的对象是否都是包含完全相同字符的字符串。

【讨论】:

猜你喜欢
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 2019-01-30
  • 2020-04-26
  • 2018-09-30
相关资源
最近更新 更多