JUnit - SQLException,如何获得覆盖?

时间:2016-07-02 17:15:42

标签: java unit-testing junit jacoco

我知道我可以使用Mockito来强制DAO方法的异常抛出,但是如何才能在DAO类中正确地获得测试覆盖?

示例:

public static void addUser(int userId, int groupId)
        throws DataSourceException {
    String query = "INSERT INTO RUserGroup (userId, groupId) VALUES (?, ?)";
    Connection connection = Pool.getInstance().getConnection();
    try (PreparedStatement ps = connection.prepareStatement(query);) {
    // ...
    } catch (SQLException e) {
        throw new DataSourceException(e);
    } finally {
        Pool.getInstance().returnConnection(connection);
    }
}

如何到达"抛出新的DataSourceException(e)"?我在代码中有很多这样的情况,它们完全破坏了分支覆盖。我正在使用JaCoCo进行报道。

1 个答案:

答案 0 :(得分:0)

问题在于模拟rails_composer方法,因为你希望你的连接是一个模拟,因为你可以让它在必要时抛出异常。
Mockito不允许你这样做。

对于此类情况,请参阅Mocking static methods with Mockito