똑같은 삽질은 2번 하지 말자

DI 컨테이너에서 관리되는 빈에 대한 통합 테스트 본문

Spring

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

곽빵 2019. 11. 17. 14:58

단위 테스트를 통과하면 진행되는 통합 테스트를 간단하게 해보즈아..

 

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

 

Maven – Introduction to the Dependency Mechanism

Introduction to the Dependency Mechanism Dependency management is a core feature of Maven. Managing dependencies for a single project is easy. Managing dependencies for multi-module projects and applications that consist of hundreds of modules is possible.

maven.apache.org

위 링크는 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