【发布时间】:2011-11-18 02:01:34
【问题描述】:
我正在尝试对一些收集量很大的 Scala 进行单元测试。这些集合返回为Iterable[T],因此我对集合的内容 感兴趣,即使底层类型不同。这其实是两个相关的问题:
- 如何断言两个 有序 集合包含相同的元素序列?
- 如何断言两个 无序 集合包含相同的元素集?
总之,我在 ScalaTest 中寻找 NUnit 的 CollectionAssert.AreEqual(有序)和 CollectionAssert.AreEquivalent(无序)的 Scala 等效项:
Set(1, 2) should equal (List(1, 2)) // ordered, pass
Iterable(2, 1) should equal (Iterable(1, 2)) // unordered, pass
【问题讨论】:
-
对于无序的情况,如果您不担心额外的内存使用,您可以在要比较的集合上调用
.toSet。 -
调用
toSet正是我想要的行为,但如果集合包含重复元素,它的行为就会不正确。 -
你可以使用
groupBy方法,并传入一些身份函数作为映射器。
标签: unit-testing scala scalatest