之前的junit异常处理
Posted
技术标签:
【中文标题】之前的junit异常处理【英文标题】:Junit exception handling in before 【发布时间】:2021-12-31 10:13:42 【问题描述】:我的问题是,我不知道如何处理 Junit4 的 @before 块中的异常。 例如:
@Before
public void init() throws Exception
b=new FirstNationalBank();
acc1=b.openAccount();
acc2=b.openAccount();
try
b.deposit(acc1, 1500);
b.deposit(acc2, 12000);
catch(Exception ex)
throw new Exception();
我这样做的方式似乎不正确,或者可能是正确的,但我不确定这是否会引发错误,或者当引发意外异常或任何类型的异常时它会如何反应。
你会如何处理它?
【问题讨论】:
捕获任何类的异常,然后抛出基类的异常(没有消息)是没有用的;它所做的只是隐藏有用的诊断信息。 但我不确定,尝试一下是件很重要的事。 (框架会处理它)。 【参考方案1】:在这里捕获和重新抛出是没有意义的,在这种情况下,您将丢失告诉您出了什么问题的原始堆栈跟踪。随便扔东西吧:
@Before
public void init() throws Exception
b=new FirstNationalBank();
acc1=b.openAccount();
acc2=b.openAccount();
b.deposit(acc1, 1500);
b.deposit(acc2, 12000);
测试框架将捕获并报告任何异常。
如果您确实需要捕获某些内容并重新抛出,请记住将原始异常传递给新异常,一个 throwable 有一个名为 cause 的成员,它可以保存另一个 throwable。这样您就可以保留显示发生了什么的原始堆栈跟踪。
【讨论】:
以上是关于之前的junit异常处理的主要内容,如果未能解决你的问题,请参考以下文章