0

내가 기본 상태로 내 개체를 저장하는 테스트 케이스에서 업데이트 작업봄 테스트

@Test 

    public void updateStatusByEmailWithEmailCustomer() 
    { 
     customerQuickRegisterRepository.save(standardEmailCustomer()); 

     assertEquals(CUST_STATUS_EMAIL,customerQuickRegisterRepository.findByEmail(CUST_EMAIL).getStatus()); 

     customerQuickRegisterRepository.updateStatusByEmail(CUST_EMAIL,STATUS_EMAIL_VERFIED); 

     assertEquals(STATUS_EMAIL_VERFIED,customerQuickRegisterRepository.findByEmail(CUST_EMAIL).getStatus()); 
    } 

내 저장소를 테스트하고 함께 테스트에서 트랜잭션을 커밋하고 그 후 나는 다른 사용 updateStatusByEmail (CUST_EMAIL로 변경하고, STATUS_EMAIL_VERFIED)하지만 여전히 다음 assert 문이 실패합니다. 이는 테스트 실행 중 업데이트가 테스트 완료 후 완료된다는 사실 때문입니다. 테스트 내에서 변경 사항을 커밋 할 수있는 방법이 있습니까?

+0

를 사용하고 있습니까? –

+0

예 .. 스프링 데이터 jpa가 맨 위에 있습니다. – MasterCode

+0

테스트가 트랜잭션에서 실행 중입니까? –

답변

1

을 플러시 내부의 Hibernate Session으로 가져올 가능성이 있습니다 (현재의 테스트 관리 트랜잭션 내에서) 데이터베이스의 기본 테이블로 변경 사항을 푸시합니다.

자세한 내용은 Spring 참조 설명서의 testing chapter에서 "오 탐지"를 검색하십시오.

기본적으로, 당신은 당신의 갱신 호출 후 해당 주장하기 전에 현재 최대 절전 모드 Sessionflush()를 호출 할 것입니다.

그래도 문제가 해결되지 않으면 Spring Framework 4.1에서 테스트 중에 programmatic transaction management에 대해 새로운 TestTransaction API를 사용할 수 있습니다.

감사합니다,

샘합니다 (spring-test 모듈의 리드)는 최대 절전 모드