测试类夹具内的异常处理?

时间:2013-08-26 21:28:11

标签: java unit-testing jdbc exception-handling

< 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);
         ...
    }
}

1 个答案:

答案 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());
  }
}

在理想的世界中,在运行测试时,您可能不会依赖于数据库(因为它很难管理其状态以进行测试),而是使用模拟对象。尽管如此,如果数据库出现故障,如果你不得不依赖它,那么最好不要试运行,并将其表现为直接故障。