Java/Spring

Spring Legacy Project part 2. (JUnit Test)

HoneyIT 2021. 2. 26. 19:23
반응형

 

스프링 프레임워크가 시작되면 스프링이 사용하는 메모리 영역을 만들게 되고 이것을 컨텍스트(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 출력이 제대로 됩니다.

반응형