똑같은 삽질은 2번 하지 말자
DI 컨테이너에서 관리되는 빈에 대한 통합 테스트 본문
단위 테스트를 통과하면 진행되는 통합 테스트를 간단하게 해보즈아..
https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
위 링크는 Maven 라이브러리 추가할 시 compile이 제대로 안되서 회색으로 뜰시 그 상태에서 대한 문서이다! 참고하자
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
version 은 본인꺼
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
@Configuration
@ComponentScan("com.spring.test") // Component 활성화 xml 의 <context: 뭐시기 랑 같은기능
public class AppConfig {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("message"); // classpath 에 message.properties 를 읽어 온다.
return messageSource;
}
}
import static org.junit.Assert.*;
import static org.hamcrest.core.Is.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
// @RunWith 의 value 속성에 JUnit에서 테스트용 DI컨테이너를 동작시키기위한 Runner 클래스 지정
@ContextConfiguration(classes = AppConfig.class)
// @ContextConfiguration의 classed 속성에 DI컨테이너가 사용하는 설정 클래스 지정
public class MessageServiceIntegrationTest {
@Autowired
MessageService service; // DI컨테이너에 등록한 테스트 대상 빈을 인젝션
@Test
public void testGetMessageByCode() {
String actualMessage = service.getMessageByCode("greeting");
// 인젝션된 빈의 메서드를 호출해서 DI 컨테이너에 의해 의존관계가 결합된 컴포넌트를 테스트
assertThat(actualMessage,is("Hello!!"));
}
}
message.properties
greeting=Hello!!
Hello!! 가 아니면 테스트에 실패한다..
요렇게
통합테스트에서
명심해야할건, 스프링 프레임워크에서 정확하게 동작하는지 이다.
'Spring' 카테고리의 다른 글
Spring css, js, 이미지 등등 resource 파일 불러올때,(<c:url> 필요성) (0) | 2019.11.19 |
---|---|
스프링 시큐리티 (0) | 2019.11.18 |
Mockito(스프링 테스트) (0) | 2019.11.17 |
스프링 테스트 (0) | 2019.11.17 |
@Validation (0) | 2019.11.14 |
Comments