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;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class SampleTests {
@Setter(onMethod_=@Autowired)
private Restaurant restaurant;
@Test
public void testExist() {
assertNotNull(restaurant);
log.info(restaurant);
log.info("----------------------");
log.info(restaurant.getChef());
}
}
@Runwith
- 테스트 코드는 우선 현재 테스트 코드가 스프링을 실행하는 역할을 할 것이다 라는 것을 나타냅니다
@ContextConfiguration
- 해당 어노테이션은 지정된 클래스나 문자열을 이용해서 필요한 객체들을 스프링 내에 객체로 등록합니다. (빈 등록)
- 이클립스에서 자동으로 생성된 root-context.xml의 경로를 지정할 수 있습니다.
@Log4j
- Lombok을 이용해 로그를 기록하는 logger를 변수로 생성합니다.
- 별도의 객체 생성 없이 사용가능 합니다.
@Autowired
- 해당 인스턴스 변수가 스프링으로부터 자동으로 주입해 달라는 표시입니다.
- 스프링은 정상적으로 주입이 가능하다면 obj 변수에 Restaurant 타입의 객체를 주입하게 됩니다.
@Test
- JUnit에서 테스트 대상을 표시하는 어노테이션입니다.
- 해당 메서드를 선택하고 JUnit Test 기능을 실행합니다.
assertNotNull()
- 해당 코드에서 restaurant 변수가 null이 아니어야만 테스트가 성공한다는 것을 의미합니다