我有一个期望特定异常的测试,例如:
@Test(expected=MyException.class)
public void testMyMethod(){
myMethod();
}
myMethod()
方法实际上抛出 MyException
的子类,让我们称之为 MySubclassException
.
Is there anyway to define my test using the @Test annotation to accept subclasses of MyException as well as the class itself?
我知道我可以自己编写测试检查逻辑而不使用 expected
捕获异常并设置标志,但我想知道JUnit是否已经支持匹配异常子类 .
3 回答
这已经由框架为您处理
让我们举一个小例子(非常糟糕的代码):import static org.junit.Assert . *;
有两个异常类MyException和MyExtendedException从前一个继承而且一个简单的Foo类如下:
使用Eclipse运行器启动测试会打印一个绿色条,因为测试会引发一个Myexception实例(是POO中的关系)
如果您更喜欢阅读源代码,那么这是Junit源代码(ExpectException.java)的一个exxcerpt:
如果
myMethod()
抛出MyException
或MySubclassException
,则测试将通过 . 我用这段代码测试了这个概念:具有Catch异常的
BDD样式解决方案
依赖关系