스프링 프레임워크가 시작되면 스프링이 사용하는 메모리 영역을 만들게 되고 이것을 컨텍스트(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 출력이 제대로 됩니다.
'Java > Spring' 카테고리의 다른 글
Spring Legacy Project part 3. (Controller의 Parameter 전달) (0) | 2021.02.28 |
---|---|
Log4j error (org.apache.log4j.Logger cannot be resolved to a type) (0) | 2021.02.27 |
Spring Legacy Project part 1. (Lombok, DI) (0) | 2021.02.24 |
Spring Legacy 개발환경 part 2. (0) | 2021.02.24 |
Spring Filter 적용하기 (0) | 2021.02.22 |