UNIT(Unit) 테스트는 소프트웨어 컴포넌트의 작은 단위를 격리시켜 독립적으로 테스트하는 방법입니다. 이를 통해 개별 컴포넌트가 올바른 결과를 반환하는지 확인하고, 신뢰성을 확보할 수 있습니다.
스프링부트에서 UNIT 테스트를 작성하려면 다음과 같은 방법을 사용할 수 있습니다.
1. JUnit 테스트 프레임워크 사용하기: 스프링부트는 JUnit을 기본으로 지원하므로, JUnit을 사용하여 테스트 코드를 작성할 수 있습니다. JUnit은 `@Test` 어노테이션을 이용하여 단위 테스트를 작성할 수 있도록 지원합니다.
2. Mockito를 사용하여 의존성 주입(Dependency Injection) 테스트하기: 스프링부트에서는 의존성 주입을 통해 컴포넌트들을 결합합니다. Mockito는 모의 객체(Mock Object)를 생성해 의존성 주입을 테스트할 수 있도록 지원합니다. 즉, Mock 객체를 사용하여 특정 메서드가 예상대로 호출되었는지, 반환값이 올바른지 등을 확인할 수 있습니다.
다음은 스프링부트에서 UNIT 테스트를 작성하는 예제입니다.
@RunWith(SpringRunner.class)
public class UserServiceTest {
@InjectMocks
private UserService userService; // 테스트 대상 객체
@Mock
private UserRepository userRepository; // Mock 객체
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testGetUser() {
// Mock 객체의 동작을 정의
User expectedUser = new User("John", "Doe");
when(userRepository.findById(1L)).thenReturn(Optional.of(expectedUser));
User user = userService.getUser(1L);
assertEquals("John", user.getFirstName());
assertEquals("Doe", user.getLastName());
}
}
위의 예제에서는 `UserService`라는 단위 테스트 대상 객체를 테스트하고 있습니다. `@RunWith(SpringRunner.class)` 어노테이션을 사용하여 테스트를 실행하고, `@InjectMocks`를 이용해 `UserService` 객체를 주입받습니다. 또한 `@Mock` 어노테이션을 이용해 `UserRepository` 객체를 Mock 객체로 주입받습니다.
`@Before` 어노테이션을 이용하여 각 테스트 메서드가 실행되기 전에 Mock 객체를 초기화하고, `when()` 메서드를 이용하여 Mock 객체의 동작을 정의합니다. 이후 `userService.getUser()` 메서드를 호출하고, 예상된 결과와 실제 결과를 `assertEquals()`를 통해 비교하여 테스트를 수행합니다.
이처럼 스프링부트에서 UNIT 테스트를 작성하는 방법은 크게 JUnit을 이용한 테스트와 Mockito를 이용한 의존성 주입 테스트로 나뉠 수 있습니다. 위 예제를 참고하여 테스트 코드를 작성하면 각각의 컴포넌트가 올바른 동작을 하는지 확인할 수 있습니다.
'Springboot' 카테고리의 다른 글
스프링부트 JWT란 무엇인가? 왜 사용할까? (0) | 2025.02.11 |
---|---|
Springboot Mybatis 사용 방법 (0) | 2023.09.20 |
테스트 주도 개발(Test-driven development) (0) | 2023.09.19 |
하이버네이트란? (0) | 2023.09.19 |
[ChatGPT] OpenAI API Key 발급 받기 (0) | 2023.09.18 |