모바일 애플리케이션에 대한 테스트 자동화 도구 …모바일 애플리케이션에 대한 테스트 자동화 도구: 설문조사 보고서 1.0 요약 UI 테스트
Spring 테스트 컨텍스트 프레임워크
-
Upload
hyun-dong-lee -
Category
Technology
-
view
25 -
download
2
Transcript of Spring 테스트 컨텍스트 프레임워크
![Page 1: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/1.jpg)
스프링 테스트 컨텍스트 프레임워크
2016.06.21http://pigbrain.github.io
이현동
![Page 2: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/2.jpg)
테스트 컨텍스트 프레임워크 ?
어플리케이션 컨텍스트를 생성 / 관리하고 테스트에 적용해주는 프레임워크
![Page 3: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/3.jpg)
테스트 메소드를 실행할 때마다 새로운 컨텍스트 생성
Junit 의 테스트 컨텍스트
![Page 4: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/4.jpg)
테스트가 사용하는 컨텍스트를 캐싱해서 여러 테스트가 하나의 컨텍스트를 공유
스프링 테스트 컨텍스트
![Page 5: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/5.jpg)
스프링 테스트 컨텍스트
![Page 6: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/6.jpg)
동일한 컨텍스트 구성을 갖는 테스트끼리는 같은 컨텍스트를 공유한다
스프링 테스트 컨텍스트
![Page 7: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/7.jpg)
동일한 컨텍스트 ?
@ContextConfiguration 에 동일한 설정 파일은 갖는 경우
![Page 8: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/8.jpg)
동일한 컨텍스트 ?
![Page 9: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/9.jpg)
동일한 컨텍스트 (O) 동일한 컨텍스트 (X)
![Page 10: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/10.jpg)
동일한 컨텍스트 (O) 동일한 컨텍스트 (X)
![Page 11: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/11.jpg)
@ContextConfiguration ( ? )
설정 파일 이름을 생략하면 현재 클래스 이름에 ‘-context.xml’ 이 붙은 파일이 디폴트 설정파일 이름으로 사용된다
![Page 12: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/12.jpg)
@ContextConfiguration (inheritLocations = true / false )
inheritLocations 설정을 false 로 하면 부모 클래스의 컨텍스트 설정 파일을 무시할 수 있다
![Page 13: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/13.jpg)
@ContextConfiguration (inheritLocations = true / false )
![Page 14: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/14.jpg)
@DirtiesContext
컨텍스트는 테스트들 사이에서 공유되기 때문에 구성 , 내부 정보를 바꾸면 안 된다
컨텍스트의 정보를 수정해야 할 경우 @DirtiesContext 를 통하여 테스트가 수행 후 컨텍스트를 공유하지 못하도록 강제한다
![Page 15: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/15.jpg)
@Transactional
메소드에 @Transactional 을 적용하면 @Before, @After 메소드는 트랜잭션 안에서 실행된다
@BeforeTransaction, @AfterTransaction 으로 트랜잭션 밖에서 필요한 작업을 할 수 있다
![Page 16: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/16.jpg)
@Configuration, @ContextConfiguration 을 이용한 테스트 설정
@Configuration 은 3.0 부터 지원되었다 .그러나 3.0 에서 이 설정을 통해 어플리케이션의
컨텍스트 설정을 하기 위해서는 CGLIB 를 필수로 포함 시켜야 한다
@ContextConfiguration 의 classes 설정은 3.1 부터 추가되었다이 어노테이션을 이용하여 테스트 컨텍스트를 자바 코드로 설정 할 수 있다
![Page 17: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/17.jpg)
@ContextConfiguration ( ? )
설정 파일 이름을 생략하면 현재 클래스 이름에 ‘-context.xml’ 이 붙은 파일이 디폴트 설정파일 이름으로 사용된다
![Page 18: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/18.jpg)
@ContextConfiguration ( ? )
‘-context.xml’ 이 붙은 파일이 없으면 ?
![Page 19: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/19.jpg)
@ContextConfiguration ( ? )
1. xml 을 찾아본다 (‘-context.xml’ 이 붙은 파일 ) 2. 디폴트 설정 클래스를 찾는다
![Page 20: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/20.jpg)
@ContextConfiguration ( classes ? )
![Page 21: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/21.jpg)
@ContextConfiguration ( classes ? )
![Page 22: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/22.jpg)
@ContextConfiguration (classes ? )
디폴트 설정 클래스는 private 이나 final 로 지정하면 안 된다
![Page 23: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/23.jpg)
@ActiveProfiles
Bean 에 적용된 profile 을 테스트에 쉽게 적용하기 위해 사용 테스트용 profile 설정
성공
성공
성공
성공실패
![Page 24: Spring 테스트 컨텍스트 프레임워크](https://reader030.fdocuments.net/reader030/viewer/2022021506/58d0b5e61a28ab1d3a8b57dd/html5/thumbnails/24.jpg)
ㄲ ㅡ ㅌ