테스트를 할 때 종종 같은 설정 파일을 필요로 하는 경우가 있습니다. 이럴 때 Abstract 클래스로 중복되는 설정파일을 읽어들이는 코드를 상위로 올리면 테스트 클래스를 작성할 때 매우 간결해 집니다.

public abstract class AbstractDaoTest extends AbstractTransactionalDataSourceSpringContextTests {

    @Override
    protected String[] getConfigLocations() {
        return new String[] { "file:web/WEB-INF/spring/hibernateContext.xml",
                "file:web/WEB-INF/spring/dataSourceContext.xml", "file:web/WEB-INF/spring/daoContext.xml", };
    }
}

이제 위 상위 클래스를 상속받아서 테스트 클래스를 작성하면 됩니다.

public class MemberDaoTest extends AbstractDaoTest{

    private MemberDao memberDao;

    public void setMemberDao(MemberDao memberDao) {
        this.memberDao = memberDao;
    }

    public void testAdd() throws Exception {
        Member member = new Member();
        memberDao.add(member);
        memberDao.flush();
        assertEquals(1, memberDao.getAll().size());
        assertNotNull(member.getMemberId());
    }

}

이것이 바로 말도 많고 탈도 많은 상속의 묘미가 아닐런지 생각해 봅니다.