티스토리 뷰

반응형

JUnit Test 에서 Lazy Init, 즉 FetchType.LAZY 인 경우에 발생하는 에러가 있습니다. 

 

junit test could not initialize proxy - no Session

Domain 내에 SubDomain 구성

 

@Test
void lazyLoadingEntitiesTest() {
    for(Domain domain : domains) {
>       final List<SubDomain> subDomains = domain.getSubDomains();
        for(SubDomain subDomain : subDomains) {
            System.out.println(subDomain);
        }
    }
}

이런 경우 해결하는 방법으로는 @Transactional 을 메소드 상단에 붙여주면 해결됩니다. 

 

@Test
@Transactional
void lazyLoadingEntitiesTest() {
    for(Domain domain : domains) {
        final List<SubDomain> subDomains = domain.getSubDomains();
        for(SubDomain subDomain : subDomains) {
            System.out.println(subDomain);
        }
    }
}

 

원인으로는 메인 Entity 클래스 내에 CascadeType.ALL 로 선언을 하여도 Unit Test에서 영속성이 끊어지는 사유가 발생하기 때문에 별도로 @Transactional 을 걸어주는 것이라고 합니다!

반응형
댓글
공지사항