我是Junit测试的新手。在这种情况下,如何为匿名内部方法(如rowmapper)编写junit测试用例。这是我要为其编写Junit测试用例的类的方法。

public List<AssetAvailabilityRef> getAssetAvailabilityRef() {

        List<AssetAvailabilityRef> refList = this.jdbcTemplate.query(MaintenanceLdrDao.assetAvailabilityRefQuery,
                new RowMapper<AssetAvailabilityRef>() {

                    @Override
                    public AssetAvailabilityRef mapRow(ResultSet rs, int arg1) throws SQLException {
                        AssetAvailabilityRef assetAvailabilityRef = new AssetAvailabilityRef();
                        assetAvailabilityRef.setSourceCode(rs.getString("source_asset_availability"));
                        assetAvailabilityRef.setDestinationCode(rs.getString("dest_asset_availability"));
                        assetAvailabilityRef.setLoadType(rs.getInt("load_type"));

                        return assetAvailabilityRef;
                    }
                });

        return refList;
    }

最佳答案

一种方法是使RowMapper公共类,然后为其编写JUnit。

通常,内部类被视为对外界隐藏的黑盒,因此不会为它们编写JUnit。

这是代码片段:

public class AssetAvailabilityRefRowMapper implements RowMapper {
    @Override
    public AssetAvailabilityRef mapRow(ResultSet rs, int arg1) throws SQLException {
        AssetAvailabilityRef assetAvailabilityRef = new AssetAvailabilityRef();
        assetAvailabilityRef.setSourceCode(rs.getString("source_asset_availability"));
        assetAvailabilityRef.setDestinationCode(rs.getString("dest_asset_availability"));
        assetAvailabilityRef.setLoadType(rs.getInt("load_type"));
        return assetAvailabilityRef;
    }
}

public List<AssetAvailabilityRef> getAssetAvailabilityRef() {
    return (List<AssetAvailabilityRef>) this.jdbcTemplate.query(
                                             MaintenanceLdrDao.assetAvailabilityRefQuery,
                                             new AssetAvailabilityRefRowMapper());
}


现在,您应该为这两个类编写JUnit。

另外,您可以在为服务类编写JUnit时使用AssetAvailabilityRefRowMapperMockito模拟EasyMock

关于java - 如何为内部方法编写junit测试用例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36515867/

10-11 22:30
查看更多