inflearn logo
강의

講義

知識共有

Spring Boot TDD - 入門から実践まで正確に

リスト要素確認

병렬 처리 시 질문

解決済みの質問

112

HAHA

投稿した質問数 52

0

강사님 안녕하세요.

전에 독립적인 환경에서 실행하면 병렬처리가 된다고 하셨던 것 같은데,

그렇다면 생성하는 코드 후 id 비교를 할 때

다른 테스트 코드에서 상품이 등록되어 반환되는 리스트가 달라질 수 있다고 생각됩니다.

그렇다면 이런 경우에는 이 테스트가 진행될 때는 다른 테스트가 동작하지 않게 처리하던가 하는 방식이 있나요?

 

예를 들어 최신 리스트를 반환한다고 할 때

테스트 리스트를 넣고

act 하기 전에 다른 테스트에서 arrange 단계에 추가 코드가 동작되면

act에서 리스트 조회할 때 반환할 때 다른 곳에서 추가한 값이 반환되어 테스트 실패

 

이렇게 될 것 같아 질문드립니다.

좋은 강의 감사드립니다.

tdd spring-boot 아키텍처 junit

回答 2

1

gyuwon2187

HAHA님 안녕하세요. 강의 수강해 주셔서 감사합니다.

말씀하신 것처럼 테스트 간에 서로 영향을 주는 상황이라면 '독립적인 환경'이 아니라고 판단할 수 있습니다.

따라서 병렬 실행 시 다양한 문제들이 발생할 수 있으니 독립적이지 못한 환경에서 실행되는 테스트들은 병렬로 실행하지 않아야 합니다.

답변이 부족하다면 말씀해주세요. :)

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. HAHA님.

테스트 환경에서 병렬 처리와 관련된 문제는 사실 많은 개발자들에게 익숙한 도전 과제입니다. 특히 테스트가 독립적으로 동작하지 않아 예상치 못한 데이터 충돌을 일으킬 수 있기 때문입니다. 이러한 문제를 해결하기 위해 몇 가지 접근법을 고려할 수 있습니다.

  1. 테스트 격리: 가장 기본적인 방법은 테스트가 완전히 격리되어 동작하도록 하는 것입니다. 이를 위해 각 테스트가 별도의 데이터베이스 인스턴스를 사용하거나, 테스트가 실행될 때마다 데이터베이스를 초기화할 수 있습니다.

  2. Mocking 활용: 테스트 시 실제 데이터베이스 대신 Mock을 사용하여 데이터의 상태를 제어하는 방법도 있습니다. 이를 통해 예상치 못한 데이터 변경을 피할 수 있습니다.

  3. 테스트 순서 제어: JUnit이나 TestNG 같은 테스트 프레임워크에서는 테스트의 실행 순서를 제어하는 기능을 제공합니다. 이를 활용하여 병렬 실행이 아닌, 순차 실행으로 변환할 수 있습니다.

  4. Spring’s @DirtiesContext 사용: Spring에서는 @DirtiesContext 어노테이션을 사용하여 특정 테스트가 끝난 후 컨텍스트를 초기화할 수 있습니다. 이를 통해 특정 테스트가 전체 상태를 변경했다면, 이후 테스트는 새롭게 초기화된 상태에서 시작할 수 있도록 합니다.

관련하여 좀 더 자세한 방법을 알고 싶다면, 다음 게시물을 참고해 보시면 도움이 될 것입니다:
- 프로젝트 규모가 큰 경우 @SpringBootTest 실행 속도 문제

이 게시물에서는 대규모 프로젝트에서 테스트를 효율적으로 관리하는 다양한 전략을 소개하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

패키지 구분에 대해 궁금한게 있습니다

0

12

1

10년간 CTO 활동을 하신 부분에 대한 질문

1

108

2

테스트 시나리오 유효하지 않은 경우는 언제 도출하나요?

1

108

2

테스트 클래스명 을 강의처럼 만드신 이유가 따로 있을까요?

1

124

2

현업에서도 현재와 같은 방식? 으로 TDD를 하는것이 일반적인가요??

1

119

1

아키텍처와 TDD의 오해에 대해 질문드립니다.

1

121

2

임의데이터 generator방식과 @Transactional에 대한 고찰

1

76

2

내부 설계에 의존하는 테스트 관련 질문 드립니다.

1

82

2

테스트 시나리오 관련 질문 드립니다.

1

76

2

@SpringBootTest 어노테이션의 classes 관련 질문 드립니다.

1

69

2

거짓 음성, 거짓 양성 관련 질문 드립니다.

1

86

1

30. 누락된 테스트 시나리오 발견

1

80

2

69.테스트격리 / 과도한 테스트 격리의 문제 중 '부적절한 설계 왜곡'

1

81

2

"오해: 단위 테스트와 통합 테스트를 잘 분리해야한다." 에 대한 질문

1

809

2

아키텍처 개선

1

120

1

assertThat 상태 코드 비교

1

84

1

테스트 격리에서 테스트 랜덤 실패 이유

0

101

2

테스트 코드 작성 범위 고민

1

241

3

질문드립니다.

2

106

1

거짓 양성, 거짓 음성 질문

2

161

2

cqrs 명령 아키텍처 개선 질문

1

147

2

거짓 양성 감지 노하우 질문입니다

4

794

2

질문드립니다.

1

153

2

프로젝트 규모가 큰 경우 @SpringBootTest 실행 속도 문제

2

1624

1