如何声明expectedException以便只传递异常和子类?目前我正在使用expectedException: Any
。
详情
我有一个像这样调用的测试实用程序方法,
assertExceptionThrown("En-passant should be rejected when the previous move was not a double advance", classOf[UnreachablePositionException] ) {
e.rejectIllegalMove(EnPassant("e5", "d6"))
}
第一个参数列表的第二个参数是classOf [SomeException]。这是测试方法的签名,
// TODO: Restrict expectedException to Exception or subclass
def assertExceptionThrown(assertion: String, expectedException: Any)(b: => Unit) {
我的问题是如何声明expectedException以便只传递异常和子类?目前我正在使用expectedException:Any。
测试特性的完整来源在这里, https://github.com/janekdb/stair-chess/blob/master/src/test/Test.scala
答案 0 :(得分:10)
使用泛型:
def assertExceptionThrown[T <: SomeException](assertion: String, expectedException: Class[T])(b: => Unit)
这表示来自T
的{{1}}类型必须是expectedException
或其子类。
示范:
SomeException