2011-08-23 99 views
2

我在寻找谷歌的testing framework风格的断言,其中类似ASSERT_LT(a,b)将检查$ a是否小于$ b,如果不是,将打印$ a和$ b在错误信息中。到目前为止我发现的断言只是停止执行,而不打印默认情况下有用的任何东西。任何指针?奖金:我喜欢写断言重的代码(不只是在测试中),所以如果断言很快评估,那将会很不错。更多信息隐藏在斯卡拉

上下文:我在使用this code作为模板编写unittests时遇到了这个问题。

+0

您链接到ScalaTest框架。你是说当ScalaTest断言失败时,它不打印有用的错误信息?或者你是否说你想要ScalaTest之类的东西而不实际使用ScalaTest?如果后者,你怎么不想使用它? –

+0

我在说ScalaTest似乎没有我想要的一切。这可能是我不了解ScalaTest中可用的内容,但我看到的唯一提供信息的操作符是“===”,它只能在声明相等时使用。如果断言失败,我想断言一个不等式并获得一条信息错误消息。 – emchristiansen

回答

4

Specs2定义了一些匹配器,如must be_<=。起初我认为这些都需要集成到一个规范中,但是在matchers page的底部,它表示它们是模块化功能,“你应该能够在你自己的测试 框架中重用”。作为一个例子,“您可以重复【性状如] org.specs2.matcher.MustMatchers写这样1 must be_==(1)和 什么得到的结果回来”。

ScalaTest也有它自己的matchers。例如,one must be < (7)

0
def assert_<[A <% Ordered[A]](a: => A, b: => A) { 
    assert(a < b, "Assertion failed: expected %s < %s" format (a, b)) 
} 

scala> assert_<(2, 1) 
java.lang.AssertionError: assertion failed: Assertion failed: expected 2 < 1