为我的Scala应用程序编写单元测试时遇到以下问题:
对于我的单元测试,我不想在输出中看到整个对象(如果测试失败),因为我只关心id
。这就是为什么我使用这样的org.scalactic.Prettifier
的原因:
case class Node(n: id, doesntMatterString: String)
implicit val prettifier: Prettifier = Prettifier(
{
case n: Node=> "n" + n.id
case ns: Seq[Node] => ns.map("n" + _.id).mkString(",")
}
)
某些测试可能会输出一个Node
,而另一些测试可能会输出Seq[Node]
。
虽然这通常可行,但我仍然收到以下警告:
non-variable type argument Node in type pattern Seq[Node] (the underlying of Seq[Node]) is unchecked since it is eliminated by erasure
我知道这里存在类型擦除的问题,但是无法弄清楚如何写Prettifier
,这样就不会显示此警告。预先感谢。