我有一个与给定计数比较的消息列表。当计数失败时,我想输出所有找到的消息,这样我知道哪条消息丢失或多余。目前我使用:
import scala.collection.JavaConversions._
def Assert_Messages (
expected : Int,
actual : java.util.List [String])
{
if (expected != 0 && actual.size == 0)
{
junit.framework.Assert.fail ("An expected error message was not reported.")
}
else if (expected != actual.size)
{
actual foreach (junit.framework.Assert.fail (_))
} // if
} // Assert_Messages
但是这只会输出第一条消息,因为junit.framework.Assert.fail
没有返回。有没有人对我有一个不涉及丑陋的StringBuffer的想法?
JUnit设置为必须在Android上运行测试。
感谢您的帮助。我期待着学习新的和漂亮的东西。
答案 0 :(得分:2)
您可以尝试junit.framework.Assert.fail(actual.mkString("; "))
。将"; "
替换为您想要用作分隔符的任何内容;如果您希望能够重建原始字符串序列,请务必转义与您的分隔字符串冲突的字符,例如用反斜杠或其他东西。
有些方面的评论:
someCollection.size == 0
,而是改为测试someCollection.isEmpty
。在Scala List
上,size
是O( n )操作,如果 n 是列表的大小; isEmpty
是O(1)。scala.
包中导入内容时,您不需要显式写入scala
前缀(除非存在歧义),因此import collection.JavaConversions._
可以很好地完成。