Jacoco需要lambda表达式特殊处理?

问题描述 投票:1回答:1

我已看过一些老的帖子约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正确报告的覆盖面?

lambda java-8 jacoco
1个回答
0
投票

你可以尝试这样的事情得到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());

    }

}
© www.soinside.com 2019 - 2024. All rights reserved.