我已看过一些老的帖子约Jacaco支持lambda函数,并发出一对夫妇几年前解决。
我很好的事情,当我运行Jacoco,它不会为lambda函数在此代码报告converage
List<SubmissionStatus> result = jdbcTemplate.query(
FINDALL_SQL,
(rs, rowNum) -> new SubmissionStatus(
rs.getLong("subm_rec_id"),
rs.getLong("subm_file_id"),
rs.getString("contract_id"),
rs.getString("contract_name"),
rs.getString("status"))
);
我知道这是正在热播CAU的,如果它没有醚:测试无法通过。我需要做一些特殊的Jacoco正确报告的覆盖面?
你可以尝试这样的事情得到100%的覆盖率。
在源代码中,你可以修改这样的
List<SubmissionStatus> result = jdbcTemplate.query(
FINDALL_SQL, getSubmissionStatusRowMapper()
);
protected RowMapper<SubmissionStatus> getSubmissionStatusRowMapper() {
return (ResultSet row, int rowNum) -> new SubmissionStatus(
row.getLong("subm_rec_id"),
row.getLong("subm_file_id"),
row.getString("contract_id"),
row.getString("contract_name"),
row.getString("status")
);
}
你可以创建JUnit测试类的Mockito,使其工作
@RunWith(MockitoJUnitRunner.class)
public class SubmissionStatusDAOTest {
private static final long SUBM_REC_ID= 1;
private static final long SUBM_FILE_ID= 2;
private static final String CONTRACT_ID= "123";
private static final String CONTRACT_NAME= "ABC";
private static final String STATUS = "SUCCESS";
@InjectMocks
private SubmissionStatusDAO dao;
@Mock
private JdbcTemplate jdbcTemplate;
@Mock
private ResultSet resultSet;
@Before
public void prepareTest() throws SQLException {
when(resultSet.getLong("subm_rec_id")).thenReturn(SUBM_REC_ID);
when(resultSet.getLong("subm_file_id")).thenReturn(SUBM_FILE_ID);
when(resultSet.getString("contract_id")).thenReturn(CONTRACT_ID);
when(resultSet.getString("contract_name")).thenReturn(CONTRACT_NAME);
when(resultSet.getString("status")).thenReturn(STATUS);
}
@Test
public void test() throws SQLException {
RowMapper<SubmissionStatus> rowMapper = dao.getSubmissionStatusRowMapper();
SubmissionStatus submissionStatus = rowMapper.mapRow(resultSet, 1);
assertEquals(SUBM_REC_ID, submissionStatus.getSubmRecId());
}
}