#java #junit #sonarqube
Вопрос:
Я должен охватить все строки для этого метода:
public Listlt;OutputDtogt; queryRating(InputDto input) { final String inIdList = String.join(",", Collections.nCopies(input.getIdList().size(), "?")); PreparedStatementSetter preparedStatementSetter = new PreparedStatementSetter() { @Override public void setValues(PreparedStatement ps) throws SQLException { ps.setString(1, input.getFirstParam()); ps.setString(2, input.getSecondParam()); int inkey = 6; for (String id : input.getIdList()) { ps.setString(inkey, id); inkey ; } } }; return this.jdbcTemplate.query(String.format(env.getProperty("env.property"), inIdList), preparedStatementSetter, new RatingMapper()); }
У меня есть этот тест:
@Test public void queryRatingTest() { InputDto input = new InputDto(); input.setIdList(Arrays.asList("S1", "S2")); when(this.jdbcTemplate.query(anyString(), any(PreparedStatementSetter.class), any(RatingMapper.class))).thenReturn(new ArrayListlt;gt;()); Listlt;OutputDtogt; result = this.dao.queryRating(input); assertNotNull(result); }
Который работает правильно, но в тестовом покрытии сонара все строки перезаписанного метода отображаются как не покрытые (хотя из результата я вижу, что выполняется метод setValues).
Есть ли какой-либо способ, которым я могу реорганизовать этот код, чтобы эти строки в setValues отображались как покрытые?
Кстати, в классе PreparedStatementSetter.java это интерфейс от org.springframework.jdbc.core