본문 바로가기
Java/Spring

Spring Legacy Project part 2. (JUnit Test)

by HoneyIT 2021. 2. 26.

 

스프링 프레임워크가 시작되면 스프링이 사용하는 메모리 영역을 만들게 되고 이것을 컨텍스트(Context)라고 합니다.

 

스프링은 자신이 객체를 생성하고 관리해야 하는 객체들에 대한 설정을 root-context.xml파일에서 합니다.

 

root-context.xml에 설정되어 있는 <context:component-scan> 태그의 내용을 통해서 org.zerock.ample 패키지를 스캔합니다.

 

해당 패키지에 있는 클래스들 중 스프링이 사용하는 @Component 라는 어노테이션이 존재하는 클래스의 인스턴스를 생성합니다.


Test

해당 위치에서 진행합니다.

테스트를 진행할 패키지와 파일을 생성합니다.

 

package org.zerock.sample;

import static org.junit.Assert.assertNotNull;

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;

import lombok.Setter;
import lombok.extern.log4j.Log4j;

//테스트 실행할때 사용하는 프로그램 spring-test 안에 있는 클래스 사용
//클래스 자체를 넘겨주어야 하기 때문에 class 를 붙여줌
@RunWith(SpringJUnit4ClassRunner.class)

//root-context.xml과는 상관이 없기 때문에 파일 정보를 넣어줌
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")

//log라는 변수를 사용할 수 있게 함 - lombok 설정이 제대로 되어야 한다.
@Log4j
public class SampleTest {

	@Setter(onMethod_ = {@Autowired}) //중괄호 안에 쓰면 여러개를 사용할 수 있다.
	private Restaurant restaurant;
	
	// 자동 DI 테스트 메서더
	// 테스트 메서드 선언 JUnit Test어노테이션 붙인 것은 다 실행해서 테스트 한다.
	@Test
	public void testExist() {
		log.info("========== 자동 DI 테스트 =========");//어떤 용도로 로그를 남길지 지정
		
		//null 인지 체크, null이면 오류 발생
		assertNotNull(restaurant);
		
		log.info(restaurant);
		log.info("-----------------------------------------");
		log.info(restaurant.getChef().hashCode());
	}
}

 

테스트를 위해 다음과 같이 코딩해줍니다.(주석 참조)

 

프로젝트 오른쪽 마우스 > Run as > JUnit test를 클릭하면 실행됩니다.

log 출력이 제대로 됩니다.