priyanka
priyanka

Reputation: 472

how to write junit test case for inner methods?

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

Answers (1)

ninja.coder
ninja.coder

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

Related Questions