Reputation: 472
I am new to Junit testing. How to write junit test case for anonymous inner methods like rowmapper in this case. This is my class's method for which I want to write Junit test case.
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;
}
Upvotes: 2
Views: 1775
Reputation: 9658
One way is to make RowMapper
public class and then write the JUnit for it.
Normally, the inner classes are considered to be the black boxes which are hidden from the outside world and hence JUnits are not written for them.
Here is the code snippet:
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());
}
Now, you should write the JUnits for both these classes.
Also, you can mock AssetAvailabilityRefRowMapper
using Mockito
or EasyMock
while writing the JUnits for your service class.
Upvotes: 2