如何在junit中输出多个字符串

时间:2011-04-18 16:28:19

标签: android scala junit

我有一个与给定计数比较的消息列表。当计数失败时,我想输出所有找到的消息,这样我知道哪条消息丢失或多余。目前我使用:

     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上运行测试。

感谢您的帮助。我期待着学习新的和漂亮的东西。

1 个答案:

答案 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._可以很好地完成。