我有这种情况,其中一些测试会抛出不同的例外。
@Test
public void addDevice(){
device.addDevice(); // this may throw exception 1
device.verifyStatus("Ready");
device.open(); // this may throw exception 2
device.verifyStatus("Open");
}
@Test
public void otherTest(){
device.act(); // this may throw exception 3
device.verifyStatus("Ready");
}
@After
public void tearDown(){
// handle the exception here
}
我想在@After
部分处理这些例外情况,而不用try
,catch
包装测试。
这可能吗?
答案 0 :(得分:1)
不,这是不可能的。
你可以使用try-catch-block来包装测试。然后,您可以将异常存储到成员变量而不是处理它。
在@After
方法中,您可以检查异常是否为空。
答案 1 :(得分:0)
由于您的评论,您使用此代码进行了数百次测试,我认为这是设置逻辑,实际应该采用@Before
方法。
因此,您可以使用before和after方法指定外部资源规则:https://github.com/junit-team/junit/wiki/Rules#externalresource-rules
在before()
方法中执行设置,捕获并存储异常,并使用after()
方法处理它们。
但是稍后处理异常是否有意义?如果设置失败,您能否成功运行测试用例?