< s>< / s> 中的行会导致抛出 ClassNotFoundException ,必须进行处理才能进行编译。如果我通过try-catch来解决编译错误,那么如果抛出异常,每个单元测试将使用未初始化的实例。如果我将throws
添加到方法签名会发生什么?
@Test
public class PanelControllerTest {
private PanelController panelController;
@BeforeTest
public void beforeTest() {
panelController = <s>new PanelController();</s>
}
}
我是测试灯具的新手,我假设这是测试类实例的正确方法。在测试夹具设置代码中处理异常的最佳方法是什么?
更新 这似乎是从PanelController调用的异常的来源:
class DBAccess {
public DBAccess(DBConnection dbConnection) throws ClassNotFoundException {
Class.forName(Constants.jdbcDriver);
...
}
}
答案 0 :(得分:2)
正确的行为是捕获异常并使测试运行失败。
@BeforeTest
public void beforeTest() {
try{
panelController = new PanelController();
} catch (Exception e) {
fail("Test failed because dependency could not be instantiated. Exception was:"+e.getMessage());
}
}
在理想的世界中,在运行测试时,您可能不会依赖于数据库(因为它很难管理其状态以进行测试),而是使用模拟对象。尽管如此,如果数据库出现故障,如果你不得不依赖它,那么最好不要试运行,并将其表现为直接故障。