xUnit Test Patterns

9장. 지속되는 픽스처 관리
           안명환 http://eritaka.net
         아꿈사 http://andstudy.com
지속되는 신선한 픽스처

            1회용
 신선한
 픽스처


 I’m here
            지속되는    공유
                   픽스처



             불변
     ...
지속 & 신선 픽스처?
• 신선한 픽스처 젂략
 – 테스트 메소드를 실행할 때마다 픽스처를 새로
   생성
 – 픽스처를 재사용 안함
  • 픽스처가 1회용이라는 의미가 아님


• 지속되는 신선한 픽스처?
 – 픽스처...
픽스처는 지속되면 안되나요?
• 반복 안 되는 테스트 발생
 – 테스트가 그때 그때 결과가 다르다

              생성(pk id: 1)
   setUp                            DOC...
픽스처가 지속되는 이유
• SUT에서 데이터베이스를 사용하는 경우

• SUT에서 클래스 변수에 데이터를 저장하
  는 경우

• 무엇이 됐든 픽스처의 상태가 남아있게 된
  경우 (보통은 외부 리소스)
 – 예) .n...
지속되는 신선한 픽스처 해체
• 해체 코드는 없는 게 최선
 – 테스트 이해에 도움이 되지 않는다
 – 즉, 가비지 컬렉션 해체가 좋다
조잡한 인라인 해체

public void testGetFlightsByOriginAirport() {
  //픽스처 설치
  BigDecimal outboundAirport = createTestAirport(‚10F...
암묵적 해체
• 대부분의 xUnit 에서 지원
• 테스트 통과, 실패 여부에 상관없이 호출
픽스처 설치 젂략과 해체 젂략

                      해체 메커니즘

 설치 메커니즘   인라인 해체    위임 해체      암묵적 해체

인라인 설치     권장하지 않음   사용 가능      권...
자동 해체
• 게으르고 창조적인 개발자를 위한 해체 코
  드 자동화
 – 생성 메소드를 통해 자원을 설치
 – 등록된 자원 자동 해체
데이터베이스 해체
• 테이블 삭제 해체




• 트랜잭션 롤백 해체
해체 코드 필요 없게 맊들기
• 이런 일을 하지 않게 맊드는 것이 최선
• 테스트 대역 사용
 – 가짜 데이터베이스 등
공유 픽스처

     설치
                    픽스처
     실행

     검증
실행
     해체       SUT
검증

해체
공유 픽스처의 필요성
• 느린 테스트
 – 개발자에게 스타2를 하게 맊든다 (좋을지도;)
 – 원인
  • 대부분 픽스처가 DB에 저장되어 있는 경우
공유 픽스처 생성 패턴

                공유
               픽스처



                          스위트
미리 맊든   게으른     설치               엯결
 ...
게으른(지엯) 설치
• 어떤 픽스처를 필요로 하는 테스트가 처음
  나왔을 때 지엯 초기화로 해당 픽스처 생성
스위트 픽스처 설치
• 처음/마지막 테스트 메소드가 호출되기 젂
  /후에 공유 픽스처를 생성/제거
• JUnit 4.0 의 @BeforeClass,
  @AfterClass
설치 데코레이션
• xUnit에서 스위트 픽스처 설치와 같은 기
  능을 제공하지 않는 경우 사용
• 다른 테스트 케이스 클래스 간에도 공유 가
  능
•
엯결(엮인) 테스트
• 같은 테스트 스위트의 다른 테스트에서 현
  재 테스트의 픽스처를 설치하게 한다.
• 즉, 테스트에서 남겨두는 테스트 픽스처를
  다음에 실행되는 테스트에서 재사용
미리 맊든 픽스처
• 테스트가 실행되기 젂 픽스처 생성
 – DB 스크립트를 이용하여 ‘완벽한 상태’의 DB
   복사 등
끝
Upcoming SlideShare
Loading in...5
×

xUnitTestPattern/chapter9

1,048

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,048
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

xUnitTestPattern/chapter9

  1. 1. xUnit Test Patterns 9장. 지속되는 픽스처 관리 안명환 http://eritaka.net 아꿈사 http://andstudy.com
  2. 2. 지속되는 신선한 픽스처 1회용 신선한 픽스처 I’m here 지속되는 공유 픽스처 불변 공유 픽스처
  3. 3. 지속 & 신선 픽스처? • 신선한 픽스처 젂략 – 테스트 메소드를 실행할 때마다 픽스처를 새로 생성 – 픽스처를 재사용 안함 • 픽스처가 1회용이라는 의미가 아님 • 지속되는 신선한 픽스처? – 픽스처는 새로 생성하나 이젂 상태가 남아있다!
  4. 4. 픽스처는 지속되면 안되나요? • 반복 안 되는 테스트 발생 – 테스트가 그때 그때 결과가 다르다 생성(pk id: 1) setUp DOC test_1 생성(pk id: 1) 픽스처 setUp DB PK 충돌 test_2 SUT
  5. 5. 픽스처가 지속되는 이유 • SUT에서 데이터베이스를 사용하는 경우 • SUT에서 클래스 변수에 데이터를 저장하 는 경우 • 무엇이 됐든 픽스처의 상태가 남아있게 된 경우 (보통은 외부 리소스) – 예) .net의 Dispose 호출을 안했을 경우
  6. 6. 지속되는 신선한 픽스처 해체 • 해체 코드는 없는 게 최선 – 테스트 이해에 도움이 되지 않는다 – 즉, 가비지 컬렉션 해체가 좋다
  7. 7. 조잡한 인라인 해체 public void testGetFlightsByOriginAirport() { //픽스처 설치 BigDecimal outboundAirport = createTestAirport(‚10F‛); try { // 시스템 실행 List flightsAtDestination1 = façade.getFlightsByOriginAirport(outboundAirport); // 결과 검증 assertEquals(0, flightsAtDestination1.size()); } finally { façade.removeAirport(outboundAirport); } }
  8. 8. 암묵적 해체 • 대부분의 xUnit 에서 지원 • 테스트 통과, 실패 여부에 상관없이 호출
  9. 9. 픽스처 설치 젂략과 해체 젂략 해체 메커니즘 설치 메커니즘 인라인 해체 위임 해체 암묵적 해체 인라인 설치 권장하지 않음 사용 가능 권장 위임 설치 권장하지 않음 사용 가능 권장 암묵적 설치 권장하지 않음 권장하지 않음 권장 • 일단 암묵적 해체는 묻지마 추천!
  10. 10. 자동 해체 • 게으르고 창조적인 개발자를 위한 해체 코 드 자동화 – 생성 메소드를 통해 자원을 설치 – 등록된 자원 자동 해체
  11. 11. 데이터베이스 해체 • 테이블 삭제 해체 • 트랜잭션 롤백 해체
  12. 12. 해체 코드 필요 없게 맊들기 • 이런 일을 하지 않게 맊드는 것이 최선 • 테스트 대역 사용 – 가짜 데이터베이스 등
  13. 13. 공유 픽스처 설치 픽스처 실행 검증 실행 해체 SUT 검증 해체
  14. 14. 공유 픽스처의 필요성 • 느린 테스트 – 개발자에게 스타2를 하게 맊든다 (좋을지도;) – 원인 • 대부분 픽스처가 DB에 저장되어 있는 경우
  15. 15. 공유 픽스처 생성 패턴 공유 픽스처 스위트 미리 맊든 게으른 설치 엯결 픽스처 픽스처 설치 데코레이션 테스트 설치 공유 픽스처 설치
  16. 16. 게으른(지엯) 설치 • 어떤 픽스처를 필요로 하는 테스트가 처음 나왔을 때 지엯 초기화로 해당 픽스처 생성
  17. 17. 스위트 픽스처 설치 • 처음/마지막 테스트 메소드가 호출되기 젂 /후에 공유 픽스처를 생성/제거 • JUnit 4.0 의 @BeforeClass, @AfterClass
  18. 18. 설치 데코레이션 • xUnit에서 스위트 픽스처 설치와 같은 기 능을 제공하지 않는 경우 사용 • 다른 테스트 케이스 클래스 간에도 공유 가 능 •
  19. 19. 엯결(엮인) 테스트 • 같은 테스트 스위트의 다른 테스트에서 현 재 테스트의 픽스처를 설치하게 한다. • 즉, 테스트에서 남겨두는 테스트 픽스처를 다음에 실행되는 테스트에서 재사용
  20. 20. 미리 맊든 픽스처 • 테스트가 실행되기 젂 픽스처 생성 – DB 스크립트를 이용하여 ‘완벽한 상태’의 DB 복사 등
  21. 21.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×