中的行会导致抛出 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);
...
}
}
最佳答案
正确的行为是捕获异常并使测试运行失败。
@BeforeTest
public void beforeTest() {
try{
panelController = new PanelController();
} catch (Exception e) {
fail("Test failed because dependency could not be instantiated. Exception was:"+e.getMessage());
}
}
在理想的情况下,运行测试时您可能不会依赖数据库(因为很难管理它们的测试状态),而是使用模拟对象。不过,如果您必须依赖它,那么最好在数据库出现故障时使测试运行失败,并将其视为直接失败。
关于java - 测试类的固定装置内的异常处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18453310/