I have two scala.xml.Elem objects (actual, expected). I am using JUnit 4, but have also included XMLUnit 1.3.
Is there any easy way to compare the two objec
If you want to compare to XML Elem objects ignoring whitespaces you can remove the whitespaces from them with scala.xml.Utility.trim method.
scala> val a = bar
a: scala.xml.Elem = bar
scala> val b = bar
b: scala.xml.Elem = bar
scala> a == b
res8: Boolean = false
scala> import scala.xml.Utility.trim
import scala.xml.Utility.trim
scala> trim(a) == trim(b)
res9: Boolean = true
Scala does not care about the order of the attributes if you use XML literals:
scala> val a =
a: scala.xml.Elem =
scala> val b =
b: scala.xml.Elem =
scala> a == b
res22: Boolean = true
I would recommend ScalaTest for unit testing there you have the ShouldMatchers:
// Scala repl started with scalatest-1.2.jar in the classpath
scala> val a = bar
a: scala.xml.Elem = bar
scala> val b = bar
b: scala.xml.Elem = bar
scala> a should equal(b)
scala> val b = bar2
b: scala.xml.Elem = bar2
scala> a should equal(b)
org.scalatest.TestFailedException: bar did not equal bar2
at org.scalatest.matchers.Matchers$class.newTestFailedException(Matchers.scala:148)
at org.scalatest.matchers.ShouldMatchers$.newTestFailedException(ShouldMatchers.scala:2329)
at org.scalatest.matchers.ShouldMatchers$ShouldMethodHelper$.shouldMatcher(ShouldMatchers.scala:871)
at org.scalatest.matchers.ShouldMatchers$SeqShouldWrapper.should(ShouldMatchers.scala:1724)
at .(:15)
at .()
at RequestResult$.(:9)
at RequestResult$.()
at RequestResult$scala_repl_result()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.Delega...