【发布时间】:2020-03-11 16:00:53
【问题描述】:
我在 scala 中有一个
case class foo(a: Array[String], b: Map[String,Any])
我正在尝试为此运行单元测试,但 assertEquals 同时将 foo 元素(实际和预期)存储在数组中。
所以最后一行是使用assertEquals(expected.deep, actual.deep)。
地图 b 显示正确,但 assertEquals 尝试匹配数组 a 的哈希码而不是内容。错误是 get 是这样的:
Array(foo([Ljava.lang.string@235543a70,Map("bar" -> "bar")))
整体代码看起来像
case class Foo(a: Array[String], b: Map[String, Any])
val foo = Foo(Array("1"), Map("ss" -> 1))
val foo2 = Foo(Array("1"), Map("ss" -> 1))
org.junit.Assert.assertEquals(Array(foo).deep, Array(foo2).deep)
您建议如何进行这项工作?
【问题讨论】:
-
Java 数组未正确实现相等检查。请改用
Seq。
标签: scala junit equals equality case-class