Java에서 독립된 단위테스트(Unit test)를 지원해주는 프레임워크
- 단위 테스트
- 특정 소스코드의 모듈이 의도한 대로 작동하는지 검증하는 테스트
- 함수 및 메소드에 대한 테스트를 하는 작업
- 스프링에서 단위테스트를 하는것은 스프링 컨테이너에 올라와있는 Bean들을 테스트
- Junit을 사용하면 스프링 컨테이너를 띄워, 그 위에 올라가있는 Bean을 테스트 할 수 있다
특징
- 단정 메소드(assert)로 테스트 케이스의 수행결과를 판별
assert()는 junit의 대표적인기능으로 테스트가 정상인지 아닌지 판별
ex) assertEqulas(예상값,실제값)
- Junit4부터는 테스트 어노테이션 제공
ex)@Test,@Before,@After
- 각 @Test어노테이션 메소드 호출 시 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지도록 함
JUnit 테스트 어노테이션
@Test
- 메소드에 @Test를 선언 : 테스트를 수행하는 메소드라는 의미
- JUnit은 각각의 테스트가 서로 영향을 주지않고 독립적으로 실행되는 것을 원칙으로 하기 때문에 @Test메소드마다 객체를 별도로 생성
@Before
- @Test메소드가 실행되기 전 반드시 실행한다는 의미
- 공통으로 사용되는 set-up 코드를 @Before메소드에 일반적으로 선언한다
- @Before은 각 메소드 전에 실행되는데,같은 환경에서 여러 메소드를 테스트하는 경우 단위 테스트 전체 수행 전 @BeforeClass어노테이션 선언으로 1번만 선언하면 됨
@After
- @Test메소드가 실행된 후 반드시 실행
- @AfterClass어노테이션 선언
@Ignore
- @Ignore어노테이션 선언하면 테스트를 skip한다
Spring-Test에서 테스트를 지원하는 어노테이션
@RunWith(SpringJUnit4ClassRunner.class)
- SpringRunner클래스는 JUnit Test에서 Spring Application Context에 빈을 등록하고 @Autowired 어노테이션을 지원
@ContextConfiguration({'파일경로'})
- 스프링 빈 설정파일의 위치를 지정하는 어노테이션
ex) @ContextConfiguration({"classpath:config/*.xml"})
파라미터로 스프링 빈 설정파일 경로를 넣어주면, 테스트 케이스를 실행할때 마다 설정파일을 로딩시켜줌
@Autowired
- 스프링 의존성주입(DI)을 대신해준다
- 해당 변수에 자동으로 빈을 매핑