java - 测试类的固定装置内的异常处理?

标签 java unit-testing jdbc exception

中的行会导致抛出 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/

相关文章:

java - 在java servlet中解析html字符串

Python 测试 - 重置所有模拟?

unit-testing - 如何使用 Google Test 测试大量数据结构的方法?

java - 来自服务器 : "Host ' 192. 168.169.98 的消息不允许连接到此 MySQL 服务器

postgresql - 在 JDBC 中将数组传递给 postgres

javascript - 无法使用 JDBC (Node.js) 访问 ignite 数据库的元数据?

java - 请解释这个Java boolean 逻辑语句

Java如何打印所有局部变量?

java - 如何使用比较器计算ArrayList中的最小字符串?

javascript - 使用 Jasmine 和 Angular 设置睾丸时出现问题