24
스스스 스스스 스스스스 스스스스스 2016.06.21 http://pigbrain.github.io 스스스

Spring 테스트 컨텍스트 프레임워크

Embed Size (px)

Citation preview

Page 1: Spring 테스트 컨텍스트 프레임워크

스프링 테스트 컨텍스트 프레임워크

2016.06.21http://pigbrain.github.io

이현동

Page 2: Spring 테스트 컨텍스트 프레임워크

테스트 컨텍스트 프레임워크 ?

어플리케이션 컨텍스트를 생성 / 관리하고 테스트에 적용해주는 프레임워크

Page 3: Spring 테스트 컨텍스트 프레임워크

테스트 메소드를 실행할 때마다 새로운 컨텍스트 생성

Junit 의 테스트 컨텍스트

Page 4: Spring 테스트 컨텍스트 프레임워크

테스트가 사용하는 컨텍스트를 캐싱해서 여러 테스트가 하나의 컨텍스트를 공유

스프링 테스트 컨텍스트

Page 5: Spring 테스트 컨텍스트 프레임워크

스프링 테스트 컨텍스트

Page 6: Spring 테스트 컨텍스트 프레임워크

동일한 컨텍스트 구성을 갖는 테스트끼리는 같은 컨텍스트를 공유한다

스프링 테스트 컨텍스트

Page 7: Spring 테스트 컨텍스트 프레임워크

동일한 컨텍스트 ?

@ContextConfiguration 에 동일한 설정 파일은 갖는 경우

Page 8: Spring 테스트 컨텍스트 프레임워크

동일한 컨텍스트 ?

Page 9: Spring 테스트 컨텍스트 프레임워크

동일한 컨텍스트 (O) 동일한 컨텍스트 (X)

Page 10: Spring 테스트 컨텍스트 프레임워크

동일한 컨텍스트 (O) 동일한 컨텍스트 (X)

Page 11: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration ( ? )

설정 파일 이름을 생략하면 현재 클래스 이름에 ‘-context.xml’ 이 붙은 파일이 디폴트 설정파일 이름으로 사용된다

Page 12: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration (inheritLocations = true / false )

inheritLocations 설정을 false 로 하면 부모 클래스의 컨텍스트 설정 파일을 무시할 수 있다

Page 13: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration (inheritLocations = true / false )

Page 14: Spring 테스트 컨텍스트 프레임워크

@DirtiesContext

컨텍스트는 테스트들 사이에서 공유되기 때문에 구성 , 내부 정보를 바꾸면 안 된다

컨텍스트의 정보를 수정해야 할 경우 @DirtiesContext 를 통하여 테스트가 수행 후 컨텍스트를 공유하지 못하도록 강제한다

Page 15: Spring 테스트 컨텍스트 프레임워크

@Transactional

메소드에 @Transactional 을 적용하면 @Before, @After 메소드는 트랜잭션 안에서 실행된다

@BeforeTransaction, @AfterTransaction 으로 트랜잭션 밖에서 필요한 작업을 할 수 있다

Page 16: Spring 테스트 컨텍스트 프레임워크

@Configuration, @ContextConfiguration 을 이용한 테스트 설정

@Configuration 은 3.0 부터 지원되었다 .그러나 3.0 에서 이 설정을 통해 어플리케이션의

컨텍스트 설정을 하기 위해서는 CGLIB 를 필수로 포함 시켜야 한다

@ContextConfiguration 의 classes 설정은 3.1 부터 추가되었다이 어노테이션을 이용하여 테스트 컨텍스트를 자바 코드로 설정 할 수 있다

Page 17: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration ( ? )

설정 파일 이름을 생략하면 현재 클래스 이름에 ‘-context.xml’ 이 붙은 파일이 디폴트 설정파일 이름으로 사용된다

Page 18: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration ( ? )

‘-context.xml’ 이 붙은 파일이 없으면 ?

Page 19: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration ( ? )

1. xml 을 찾아본다 (‘-context.xml’ 이 붙은 파일 ) 2. 디폴트 설정 클래스를 찾는다

Page 20: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration ( classes ? )

Page 21: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration ( classes ? )

Page 22: Spring 테스트 컨텍스트 프레임워크

@ContextConfiguration (classes ? )

디폴트 설정 클래스는 private 이나 final 로 지정하면 안 된다

Page 23: Spring 테스트 컨텍스트 프레임워크

@ActiveProfiles

Bean 에 적용된 profile 을 테스트에 쉽게 적용하기 위해 사용 테스트용 profile 설정

성공

성공

성공

성공실패

Page 24: Spring 테스트 컨텍스트 프레임워크

ㄲ ㅡ ㅌ