inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링과 JPA 기반 웹 애플리케이션 개발

안녕하세요! 회원가입 인증 메일 테스트 케이스 작성중 궁금한게 생겼습니다!

316

tkdduq8260

작성한 질문수 2

0

안녕하세요! 백기선님 강의 정말로 잘 듣고 있습니다.

인증 메일 테스트 케이스 작성을 하다가 궁금한점이 생겨서 이렇게 질문을 올리게 되었습니다.
인증메일 확인 - 입력값 정상 테스트 케이스를 약간 수정해서  

이런식으로 작성했습니다. 토큰을 생성한뒤 db에 해당 객체를 저장하기때문에  @Transactional어노테이션을 넣지 않았습니다.
이 테스트 케이스는 혼자서 동작시키면 잘 작동하지만, 다른 테스트 케이스와 같이 돌리게 되면 작동하지 않습니다. (DataIntegrityViolationException 가 발생합니다.)
다른 테스트케이스에서도 똑같은 nickname을 사용하고 있기 때문에 발생하는 예외인것 같습니다. 
그런데 왜 백기선님의 코드에서는 오류가 발생하지 않지? 라는 생각을 가지게 되어서 차이점을 살펴봤더니
유일한 차이점이 @Transactional 어노테이션이었고 해당 어노테이션을 넣으니까 모든 테스트케이스가 정상적으로 동작했습니다.
@Transactional 어노테이션이 Test가 끝난뒤에 db를 초기화하는 기능까지 있는건가요? 이해가 잘 되지않습니다..

spring-boot spring java JPA thymeleaf

답변 2

0

tkdduq8260

아 감사합니다! 이해됐습니다!

0

백기선

@Test가 있는 메소드에 @Transactional을 사용하면 스프링은 해당 메소드에서 일어난 DB 작업을 자동으로 롤백시킵니다. 다른 테스트에 영향을 주지 않기 위해서죠. 그래서 @Transactional이 있는 경우에는 해당 데이터가 테스트 끝나고 사라지니까 다른 테스트에서도 다시 똑같은 데이터를 넣을 수 있는겁니다. @Transactional이 없으면 말씀하신대로 테스트 간에 중복 데이터가 생겨서 문제가 생기는거구요.

Study 개설하는 로직에 대해서 궁금점이 있습니다.

0

55

1

앱 재시작 후 회원가입

0

103

1

app.host 관련 질문이 있습니다

0

97

1

강의 버전 정보

0

125

1

event, study 참조

0

220

2

비밀번호 변경 로직 질문있습니다.

0

135

1

프로필 수정 처리 merge 질문입니다.

0

108

1

회원가입 성공 후 redirect이동시 권한 질문

0

494

3

HtmlEmailService 개발하다 생긴 의문입니다

0

250

2

postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다

0

431

2

수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다

0

260

2

[긴급-재업로드]수업질문 로그인 안 되는 문제

0

235

1

[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요

0

277

1

cropper 오류 문제로 질문드립니다..

0

288

2

authentication관련 질문...

0

495

2

모임참가 취소 할때 로직 질문

0

350

3

안녕하세요 기선님 질문이있습니다..

0

229

1

HTML코드 및 강의 중간자료들

0

679

3

springSecurity

0

523

2

버전 질문입니다.

0

302

1

부트스트랩, css

0

353

2

영속성 컨텍스트 질문

0

248

2

다시 강의를 보니 드는생각..

0

352

2

5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?

0

313

1