동시에 사용하기 위해 트랜잭션 방식 인 서비스 메서드를 테스트해야합니까? (값을 줄임으로써 데이터베이스 행을 업데이트 함)?트랜잭션 서비스 동시 호출 테스트
저는 SpringJunit4ClassRunner로 JUnit 테스트 클래스를 설정했고 컴포넌트는 @autowired입니다.
메서드를 호출하는 스레드를 생성하는 것만으로는 작동하지 않는 것 같습니다. 이것이 Spring 프록시 메커니즘과 관련이 있는지 여부는 확실하지 않습니다.
달성하고자하는 것은 동시에 두 개의 스레드가 테스트 된 메서드의 "내부"에 있고 다른 스레드가 실패하고 롤백하는 상황을 만드는 것입니다. 예 : 행 값은 3이고 두 메소드 호출은 값을 2 씩 줄이려고 시도합니다. 메서드가 작동하지 않으면 값은 -1이되며 이는 잘못된 것입니다. 하지만 두 호출 중 하나가 실패하고 롤백되거나, 다른 호출보다 나중에 즉시 업데이트하려고 시도하는 호출이 실패합니다.
이것도 가능합니까?
스레드를 생성 할 때 제대로 작동하지 않는지를 설명해야합니다. – tangens
나는 callable 메서드의 시작 부분에 nullpointer 예외가있다. (private 메서드 호출 일 뿐이다.) 테이블이 존재하지 않았다고 말하는 예외가있다. 테스트 메서드에서 같은 호출 이후에 이상한 것이었다. t 스레드가 잘 작동했습니다. – egaga