0
我試圖模擬常見測試框架(例如JUnit或TestNG)的預期異常行爲。斯卡拉預計異常片段
這是我能想出這麼遠(工作):
trait ExpectAsserts
{
self : {
def fail (message : String)
def success (message : String)
} =>
def expect[T](exceptionClass : Class[T])(test : => Unit)
{
try
{
test
fail("exception not thrown")
}
catch
{
case expected : T => success("got exception " + expected)
case other : Exception => fail("expected "+ exceptionClass + " but " + other + " thrown instead.")
}
}
}
object Main extends ExpectAsserts
{
def main (args : Array[String])
{
expect(classOf[ArithmeticException])
{
throw new IllegalArgumentException // this should print an error message.
}
}
def fail (s : String)
{
System.err.println(s)
}
def success(s : String)
{
System.out.println(s)
}
}
代碼段有一個main
方法分析代碼。我的問題是,拋出的異常的第一圖案匹配的語句進入:
case expected : T
雖然我實際上說的異常必須是T
型,這將是IllegalArgumentException
的。
任何想法?
非常感謝你的提示 –