PHpullh
학습 라이브러리/Java/Spring 테스트 기초

JAVA · 테스트

Spring 테스트 기초

@SpringBootTest로 Spring 컨텍스트 기반 통합 테스트를 수행합니다.

테스트중급SpringBootTestSpring통합테스트Autowired

핵심 설명

@SpringBootTest로 Spring 컨텍스트 기반 통합 테스트를 수행합니다.

Java code

// Spring Boot Test 의존성: spring-boot-starter-test

// @SpringBootTest
// class UserServiceIntegrationTest {
//     @Autowired
//     UserService userService;
//
//     @Autowired
//     UserRepository userRepository;
//
//     @BeforeEach
//     void cleanup() { userRepository.deleteAll(); }
//
//     @Test
//     @DisplayName("사용자 생성 통합 테스트")
//     void createUser() {
//         UserDTO dto = new UserDTO("홍길동", "hong@test.com");
//         User created = userService.create(dto);
//
//         assertNotNull(created.getId());
//         assertEquals("홍길동", created.getName());
//
//         // DB에 실제 저장 확인
//         Optional<User> found = userRepository.findById(created.getId());
//         assertTrue(found.isPresent());
//     }
//
//     @Test
//     @DisplayName("중복 이메일 예외")
//     void duplicateEmail() {
//         userService.create(new UserDTO("A", "dup@test.com"));
//         assertThrows(DuplicateException.class,
//             () -> userService.create(new UserDTO("B", "dup@test.com")));
//     }
// }

class Main {
    public static void main(String[] args) {
        System.out.println("@SpringBootTest: 전체 컨텍스트 로드");
        System.out.println("@WebMvcTest: 웹 레이어만");
        System.out.println("@DataJpaTest: JPA 레이어만");
    }
}

학습 팁

@SpringBootTest는 전체 컨텍스트를 로드하므로 느립니다. 슬라이스 테스트(@WebMvcTest, @DataJpaTest)를 먼저 고려하세요.

주의할 점

@Transactional을 테스트에 붙이면 자동 롤백됩니다. 편리하지만 실제 커밋 동작을 테스트하지 못하는 함정이 있습니다.

자주 묻는 질문

Spring 테스트 기초란 무엇인가요?

@SpringBootTest 로 Spring 컨텍스트 기반 통합 테스트를 수행합니다.

Spring 테스트 기초 학습 시 주의할 점은 무엇인가요?

@Transactional 을 테스트에 붙이면 자동 롤백됩니다. 편리하지만 실제 커밋 동작을 테스트하지 못하는 함정이 있습니다.