Мы используем Coverity для определения потенциальной безопасности и качества fl aws в нашем Java коде. В одном из наших модульных тестов у нас есть тестирование, которое включает код подключения к базе данных:
Connection connection = mock(Connection.class);
Statement statement = mock(Statement.class);
when(connection.createStatement()).thenReturn(statement);
Coverity жалуется на потенциальную утечку ресурса:
CID 21920: утечка ресурса (RESOURCE_LEAK ) 4. leaked_resource: не удается сохранить или закрыть ресурс, созданный connection.createStatement ()
Насколько я понимаю, как работает Mockito, так это то, что connection.getStatement()
фактически никогда не вызывается, и поэтому не создается никакого оператора, который должен быть закрытым позже. (Это отличается от типичного случая в базах данных, где соединение JDB C должно быть закрыто.)
Правильно ли мое понимание? Справедливо ли говорить, что это ложное сообщение от Coverity, вызванное нетипичным поведением getConnection()
в контексте насмешек? Если нет, пожалуйста, поправьте меня.