-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
@Transactional 어노테이션 위치에 관하여 질문합니다 :)
23.05.13 01:50 작성 조회수 325
1
홍빡 선생님 반갑습니다. 덕분에 스프링 부트에 대한 개념과 전체적인 흐름이 잘잡히고 있습니다. 아직 너무도 부족한.... ㅠㅠ 1인 그래도 부지런히 따라 가겠습니다.
다름이 아니라 선생님이 하신 코드를 따라 치면서 생각하다가 이렇게도 해도 괜찮을것같은데
혹여나 문제가 발생하면 안될거 같아서 정확히 알고자 질문드리빈다.
우선 기존에 짜셨던 코드입니다.
@SpringBootTest
class ArticleServiceTest {
@Autowired
ArticleService articleService;
@Transactional
@Test
void index() {
// 예상
Article a = new Article(1L, "가가가가", "1111");
Article b = new Article(2L, "나나나나", "2222");
Article c = new Article(3L, "다다다다", "3333");
List<Article> expected = new ArrayList<Article>(Arrays.asList(a,b,c));
// 실제
List<Article> articles = articleService.index();
// 검증
assertEquals(expected.toString(), articles.toString());
}
@Transactional
@Test
void show_성공____존재하는_id_입력() {
// 예상
Long id = 1L;
Article expected = new Article(id, "가가가가", "1111");
// 실제
Article article = articleService.show(id);
// 검증
assertEquals(expected.toString(), article.toString());
}
제가 말씀드리고 싶은 부분은 저 롤백역할을 하려는 Transactional 어노테이션?? 에 관한 이야기인데요. 테스트 코드가 랜덤으로 진행이 되는건지는 정확히 모르겠습니다.
그런데 Transactional을 초반에 설정하면 어떨까요 ? 우선 그렇게 해서 2번을 돌려보았는데 테스트 코드 2번 다 성공했습니다.
예를들어서
@Trasactional
@SpringBootTest
class ArticleServiceTest {
@Autowired
ArticleService articleService;
@Test
void index() {
// 예상
Article a = new Article(1L, "가가가가", "1111");
Article b = new Article(2L, "나나나나", "2222");
Article c = new Article(3L, "다다다다", "3333");
List<Article> expected = new ArrayList<Article>(Arrays.asList(a,b,c));
// 실제
List<Article> articles = articleService.index();
// 검증
assertEquals(expected.toString(), articles.toString());
}
@Test
void show_성공____존재하는_id_입력() {
// 예상
Long id = 1L;
Article expected = new Article(id, "가가가가", "1111");
// 실제
Article article = articleService.show(id);
// 검증
assertEquals(expected.toString(), article.toString());
}
이런식으로요!! 그러면 일일이 작업을 안해도될것같은데
혹시나 이게 잘못될수도 있을까봐 질문드려봅니다!
답변을 작성해보세요.
답변 1