berryberrybin / board-project

0 stars 0 forks source link

스프링 테스트 #8

Open berryberrybin opened 1 year ago

berryberrybin commented 1 year ago

스프링 테스트 (Spring Test)

단위 테스트

통합 테스트

berryberrybin commented 1 year ago

DI 컨테이너에서 관리되는 빈(@Controller, @Service, @Repository, @Component 등이 붙은 클래스)을 테스트하는 방법

빈에 대한 단위테스트

// 고정메시지를 반환하는 클래스
@Service
public class MessageService {
   public String getMessage() { regurn "Hello!!"; }
}    
// 고정 메시지를 반환하는 클래스의 JUni 테스트 케이스
public class MessageServiceTest {
   @Test
   public void testGetMessage() {
      MessageService service = new MessageService();
      String actualMessage = service.getMessage();
      assertThat(actualMessage, is("Hello!!"));
   }
}

}


```java
// MessageSource에서 메시지를 가져오는 클래스의 JUnit테스트 케이스
// Mockito를 사용해 MessageSource를 모의화한 테스트 케이스
@RunWith(MockitoJUnitRunner.class)
public class MessageServiceTest { 
   // MockitoJUnitRunner를 이용해 테스트할 컴포넌트(@InjectMocks를 부여한 컴포넌트)에 모의화한 컴포넌트(@Mock이나 @Spy를 붙인 컴포넌트)를 인젝션 할 수 있게 함
   @InjectMocks
   MessageService service;

   @Mock
   MessageSource mockMessageSource;

   @Test
   public void testGetMessageByCode() {
      doReturn("Hello!!").when(mockMessageSource).getMessage("greeting",null, Locale.getDefault());
      // MessageSource의 목을 설정했음. 'greeting'이라는 코드가 지정될때 'Hello!!'가 반환하게 함
      String actualMessage = service.getMessageByCode("greeting");
      assertThat(actualMessage, is("Hello!!"));
   }
}
berryberrybin commented 1 year ago

DI 컨테이너에서 관리된느 빈에 대한 통합 테스트

// 자바 기반 설정 방식을 이용한 빈 정의
@Configuration
@ComponentScan("com.exaple.domain") // 컴포넌트 스캔을 활성화
public class AppConfig {
   @Bean // MessageSource의 빈정의 
   public MessageSource messageSource() {
      ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
      messageSource.setBasenames("messages");
      return messageSource;
   }
}

(2) 테스트 케이스 작성과 실행