我会使用Groovy编写单元测试,因为这是 Groovy 的优势之一,请参阅
但是 Groovy 在处理 XML 方面也非常出色,请参阅
总结一些 XML 属性的小例子:
// multiline string, very complex XML content :-)
def input = '''\
<list>
<summand value='13' time='10:40' text='Compare me!'/>
<summand value='1' />
<summand value='4' />
<summand value='2' />
<summand value='7' />
</list>'''
// reading XML via XmlSlurper
def list = new XmlSlurper().parseText(input)
// Prints 13
println list.summand[0].@value
// collect all summand values, prints 27
println list.summand.collect { it.@value.toInteger() }.sum()
您可以在MEAP Making Java Groovy中找到一个很好的测试教程,或者查看这个演示文稿。
Groovy 也有模板支持。但是通过 XML 支持,很容易只比较某些属性而不是整个标签内容来跳过一些属性,比如你提到的时间戳。因此,您无需比较模板。例如,将此源添加到上面的脚本中:
// compare the first summand tag, skipping the time attribute
assert [list.summand[0].@value.toInteger(), list.summand[0].@text] == [13, 'Compare me!']
要学习 Groovy,我推荐Groovy Koans。另请参阅将 Groovy 测试添加到 Maven Java 项目。
更新:
我不会将 XML 相互比较,而是对我的答案中描述的单个值进行单元测试。但如果你走完整的路,我会使用以下方法: