@DataJpaTest를 사용할 때 봄 부팅 테스트에서 Hibernate @Formula가 작동하지 않습니다.

바실리스 콘 스탄 티누

Java Spring 프로젝트에 대한 통합 테스트를 작성하려고합니다. 코드의 어느 시점에서 나는 customer.getId()ID가 @Formula다음과 같은 주석으로 생성되는 위치 를 확인해야합니다 . ( Customer_Id내 자동 증가 기본 키임을 기억하십시오 )

@Formula("Customer_Id")
private int id

lombokgetter 및 setter 메서드를 생성 하는 사용 합니다. 테스트 용 데이터베이스는 H2이고 테스트에 사용 Junit5합니다. 내가 직면 한 문제는 getId()항상 0테스트에 주석을 달 때 행동을 테스트 할 수 없다는 입니다 @DataJpaTest. 나는 그것을 작동하도록 @SpringBootTest만들었지 만 슬라이스 테스트를 고수하고 싶습니다.

s로 @DataJpaTest작업 하는 방법이 @Formula있습니까?

미리 감사드립니다.

@Entity(name="customers")
@Table(name="Customers")
@Getter
@Setter
@NoArgsConstructor
public class Customer{

    @Formula("Customer_Id")
    private int id;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="Customer_Id", unique=true, nullable=false, precision=10)
    private int customerId;
}
// if it is annotated with @SpringBootTest the tests passes
@DataJpaTest
@ActiveProfiles("test")
@EnableJpaAuditing
class MyClassTests {

    @Autowired
    private CustomerRepository customerRepository;

    @Test
    void given_a_customer_should_have_customerId_and_id_equal(){
        Customer customer = new Customer();
        customerRepository.save(customer);
        // if i don't call findOneByCustomerId test fails for both @SpringBootTest and @DataJpaTest
        customer = customerRepository.findOneByCustomerId(customer.getCustomerId());
        assertEquals(customer.getCustomerId(), customer.getId()); // expected: 1, actual 0
    }
}
더크 데인

사용하는 경우 @DataJpaTest

기본적으로 데이터 JPA 테스트는 트랜잭션이며 각 테스트가 끝날 때 롤백됩니다 . 자세한 내용은 Spring Framework 참조 문서 관련 섹션 을 참조하십시오.

사용 @SpringBootTest하는 경우는 그렇지 않습니다. 그러나 @Transational클래스에 추가 하면 테스트가 실패합니다.

해결책:

@DataJpaTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
class MyClassTests {
  ...

Propagation.NOT_SUPPORTED는 물리적 트랜잭션이 존재하면 계속하기 전에 일시 중단됨을 나타냅니다. 이 실제 거래는 마지막에 자동으로 재개됩니다. 이 트랜잭션이 재개 된 후에는 롤백 (실패한 경우)하거나 커밋 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내가 spring.config.location을 지정할 때 봄 부팅 2.x를하지 스캔 application.properties을한다

분류에서Dev

때 낙타 경우 봄 부팅 환경 변수에서지도를로드하지 않습니다

분류에서Dev

proguard를 사용할 때 gmailsender가 작동하지 않습니다.

분류에서Dev

웹 서버를 시작하지 못했습니다. 포트 8080은 이미 사용했다. 봄 부팅

분류에서Dev

테스트를 실행할 때 봄 부팅 옵션 콩은 게으른 될 수 없습니다

분류에서Dev

Hibernate를 사용한 테이블 삭제가 작동하지 않습니다.

분류에서Dev

CRUD 작업에 리소스를 사용할 때 Laravel 5.2 경로가 작동하지 않습니다.

분류에서Dev

봄 부팅과 코 틀린 사용할 때 NullPointerException이에 Hystrix 리드를 사용

분류에서Dev

부트 스트랩 CSS를 추가 할 때 전체 높이가 작동하지 않습니다.

분류에서Dev

Swagger는 휴식에 새 API 컨트롤러를 추가하지 않습니다 (봄 부팅).

분류에서Dev

봄 부팅 JPA 메타 모델은 비워 둘 수 없습니다! JUnit을 / 통합 테스트를 실행하려고 할 때

분류에서Dev

systemd를 init 시스템 (PID 1)으로 사용하여 시스템을 부팅하지 않았습니다. 작동 할 수 없습니다. 버스에 연결하지 못했습니다. 호스트가 다운되었습니다.

분류에서Dev

무엇 봄 부팅에 @ControllerAdvice 주석이며 왜 우리가 때를 사용?

분류에서Dev

봄 부팅 액츄에이터 엔드 포인트 보안은 사용자 정의 봄 보안 구성이 작동하지 않습니다

분류에서Dev

브라우저를 최소화 할 때 부트 스트랩 navbar가 작동하지 않습니다.

분류에서Dev

봄 부팅 + JPA : @Transactional 주석 : 롤 다시가 작동하지 않습니다

분류에서Dev

FilterRegistrationBean 봄 부팅 1.4에서 더 이상 사용되지 않습니다. *

분류에서Dev

KVM PCI 패스 스루를 사용할 때 GTX 1080 용 드라이버가 게스트에서 작동하지 않습니다.

분류에서Dev

EmberJs에서 경로를 전환 할 때 부트 스트랩 구성 요소 (모델, 탭, 드롭 다운)가 작동하지 않습니다.

분류에서Dev

ToListAsync 메서드를 사용할 때 스레드가 작동하지 않습니다.

분류에서Dev

휴대폰에서 사용할 때 부트 스트랩 드롭 다운 메뉴가 작동하지 않음

분류에서Dev

봄 부팅 + webflux : 병렬로 몇 가지 단계를 실행할 때 컨텍스트 손실

분류에서Dev

사용자 지정 작업 클래스를 사용할 때 Api 플랫폼에서 Symfony 유효성 검사가 작동하지 않습니다.

분류에서Dev

.forEach 내부 비동기 작업 작성자가 단위 테스트를 실행할 때 작업을 반환하지 않습니다.

분류에서Dev

내 양식에서 MultipleFileField ()를 사용할 때 FileRequiredValidator ()가 작동하지 않습니다.

분류에서Dev

팝업 메뉴를 사용할 때 Android Marshmallow에서 getTextBeforeCursor 및 getExtractedText가 작동하지 않습니다.

분류에서Dev

보기 모드에서 DropDownListFor를 사용할 때 [Required (ErrorMessage = "")]가 작동하지 않습니다.

분류에서Dev

오라클 봄 부팅 2.0 매김가 작동하지 않습니다

분류에서Dev

props.match.params.id는 테스트 할 때 작동하지만 gh-pages를 사용하여 github에 배포 할 때는 작동하지 않습니다.

Related 관련 기사

  1. 1

    내가 spring.config.location을 지정할 때 봄 부팅 2.x를하지 스캔 application.properties을한다

  2. 2

    때 낙타 경우 봄 부팅 환경 변수에서지도를로드하지 않습니다

  3. 3

    proguard를 사용할 때 gmailsender가 작동하지 않습니다.

  4. 4

    웹 서버를 시작하지 못했습니다. 포트 8080은 이미 사용했다. 봄 부팅

  5. 5

    테스트를 실행할 때 봄 부팅 옵션 콩은 게으른 될 수 없습니다

  6. 6

    Hibernate를 사용한 테이블 삭제가 작동하지 않습니다.

  7. 7

    CRUD 작업에 리소스를 사용할 때 Laravel 5.2 경로가 작동하지 않습니다.

  8. 8

    봄 부팅과 코 틀린 사용할 때 NullPointerException이에 Hystrix 리드를 사용

  9. 9

    부트 스트랩 CSS를 추가 할 때 전체 높이가 작동하지 않습니다.

  10. 10

    Swagger는 휴식에 새 API 컨트롤러를 추가하지 않습니다 (봄 부팅).

  11. 11

    봄 부팅 JPA 메타 모델은 비워 둘 수 없습니다! JUnit을 / 통합 테스트를 실행하려고 할 때

  12. 12

    systemd를 init 시스템 (PID 1)으로 사용하여 시스템을 부팅하지 않았습니다. 작동 할 수 없습니다. 버스에 연결하지 못했습니다. 호스트가 다운되었습니다.

  13. 13

    무엇 봄 부팅에 @ControllerAdvice 주석이며 왜 우리가 때를 사용?

  14. 14

    봄 부팅 액츄에이터 엔드 포인트 보안은 사용자 정의 봄 보안 구성이 작동하지 않습니다

  15. 15

    브라우저를 최소화 할 때 부트 스트랩 navbar가 작동하지 않습니다.

  16. 16

    봄 부팅 + JPA : @Transactional 주석 : 롤 다시가 작동하지 않습니다

  17. 17

    FilterRegistrationBean 봄 부팅 1.4에서 더 이상 사용되지 않습니다. *

  18. 18

    KVM PCI 패스 스루를 사용할 때 GTX 1080 용 드라이버가 게스트에서 작동하지 않습니다.

  19. 19

    EmberJs에서 경로를 전환 할 때 부트 스트랩 구성 요소 (모델, 탭, 드롭 다운)가 작동하지 않습니다.

  20. 20

    ToListAsync 메서드를 사용할 때 스레드가 작동하지 않습니다.

  21. 21

    휴대폰에서 사용할 때 부트 스트랩 드롭 다운 메뉴가 작동하지 않음

  22. 22

    봄 부팅 + webflux : 병렬로 몇 가지 단계를 실행할 때 컨텍스트 손실

  23. 23

    사용자 지정 작업 클래스를 사용할 때 Api 플랫폼에서 Symfony 유효성 검사가 작동하지 않습니다.

  24. 24

    .forEach 내부 비동기 작업 작성자가 단위 테스트를 실행할 때 작업을 반환하지 않습니다.

  25. 25

    내 양식에서 MultipleFileField ()를 사용할 때 FileRequiredValidator ()가 작동하지 않습니다.

  26. 26

    팝업 메뉴를 사용할 때 Android Marshmallow에서 getTextBeforeCursor 및 getExtractedText가 작동하지 않습니다.

  27. 27

    보기 모드에서 DropDownListFor를 사용할 때 [Required (ErrorMessage = "")]가 작동하지 않습니다.

  28. 28

    오라클 봄 부팅 2.0 매김가 작동하지 않습니다

  29. 29

    props.match.params.id는 테스트 할 때 작동하지만 gh-pages를 사용하여 github에 배포 할 때는 작동하지 않습니다.

뜨겁다태그

보관