我是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时使用
AssetAvailabilityRefRowMapper
或Mockito
模拟EasyMock
。关于java - 如何为内部方法编写junit测试用例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36515867/