Junit
스프링의 단위 테스트 수행을 위한 프레임워크
src/main/java
src/test/java
아래처럼 패키지 및 자바 클래스 생성
pom.xml에 아래 코드 추가
(Junit은 4.10 이상의 버전 사용 필요)
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
...
Chef.java 파일 작성
package com.myspring.sample;
import org.springframework.stereotype.Component;
import lombok.Data;
@Component // 스프링에게 해당 클래스가 스프링에서 관리해야 하는 대상
@Data // getter, setter, toString 등 포함
public class Chef {
}
Restaurant.java 파일 작성
package com.myspring.sample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import lombok.Data;
import lombok.Setter;
@Component // 스프링에게 해당 클래스가 스프링에서 관리해야 하는 대상
@Data // getter, setter, toString 등 포함
public class Restaurant {
@Setter(onMethod_ = @Autowired) // 자동으로 setChef() 컴파일 시 생성
private Chef chef;
}
SampleTests.java 파일 작성
package com.myspring.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;
@RunWith(SpringJUnit4ClassRunner.class) // 이 Test 코드가 스프링 실행 역할임을 알려준다
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml") // 스프링 Beans(객체)로 등록
@Log4j // 로그 기록용
public class SampleTests {
// Autowired : 인스턴스 변수를 스프링으로부터 자동 주입
@Setter(onMethod_ = { @Autowired })
private Restaurant restaurant;
@Test // 테스트 대상 표시
public void testExist() {
assertNotNull(restaurant); // restaurant 변수가 null이 아니어야만 테스트 성공
log.info(restaurant);
log.info("--------------------------");
log.info(restaurant.getChef());
}
}
프로젝트 우클릭 > Run As > JUnit Test
이후 Console창에서 아래 로그를 확인할 수 있다.
확인할 수 있는 부분
1. new Restaurant()와 같은 객체 생성자가 없어도 객체 생성이 됨
> 스프링은 관리가 필요한 Beans(객체)를 어노테이션을 이용해 객체 생성 및 관리를 해주는 컨테이너/팩토리 기능이 있다.
2. @Data 어노테이션으로 Lombok 이용, 이후 여러 메서드 생성
> Lombok은 Setter, Getter등을 만들어주고, onMethod 속성을 이용하여 작성된 Setter에 @Autowired 어노테이션 추가
3. Resuaurant 객체의 Chef 인스턴스 변수에 Chef 타입의 객체가 주입
> 스프링은 @Autowired 어노테이션을 이용해 객체를 직접 관리하지 않고 자동으로 관리되도록 한다.
'Spring' 카테고리의 다른 글
스프링 - 오라클 데이터베이스 연동 (0) | 2025.05.18 |
---|---|
스프링 - 어노테이션 정리 (0) | 2025.05.18 |
스프링 - Lombok 설치 및 사용 (0) | 2025.05.17 |
스프링 - 서버 실행 및 접속 테스트 (0) | 2025.05.17 |
스프링 - pom.xml에 대한 몇 가지 정보 (0) | 2025.05.17 |