17. Test Fixture 용어 Fixture픽스처 픽스처 란 무엇인가요? 테스트를 반복적으로 수행할 수 있게 도와주고 매번 동일한 결과를 얻을 수 있게 도와주는 ‘기반이 되는 상태나 환경’ 고품질 쾌속개발을 위한 TDD 실천법과 도구 -한빛미디어 일관된 테스트 실행환경이라고도 하며, 때로는 테스트 컨텍스트라 부르기도 한다. 테스트 케이스에서 사용할 객체의 인스턴스를 만든다든가, 데이터베이스와 연동할수있는 참조를 선언한다든가, 파일이나 네트워크 등의 자원을 만들어 지정한다든가 하는 등의 작업 혹은 그 작업의 결과로 만들어진 대상을 통칭한다.
18. Test Fixture 용어 Fresh Fixture 신선한 픽스처 신선한 픽스처란? 각 테스트가 깨끗한 상태의 픽스처를 새로 만들어서 쓰는것 이전에 사용된적이 없는 신선하고 새로운 픽스처
19. Test Fixture 용어 Fresh Fixture 신선한 픽스처 무엇이 1회용 신선한 픽스처인가? 픽스처가 메모리에만 있고, 지역변수나 인스턴스 변수에만 저장돼 있다면 테스트가 끝날때 친절한 가비지 컬렉션 해체가 알아서 없애준다. 픽스처가 지속적이라면 이런일은 일어나지 않는다. 픽스처를 신선하게 유지하는 방법 1. 테스트가 끝날때마다 픽스처를 해체하는것 2. 이전 픽스처를 그대로 두고 새로운 픽스처를 충돌하지 않게 만드는것
27. Fixture Setup Pattern In-line Setup 인라인 설치 How it works 각 테스트 메소드에 필요한 테스트 픽스처를 생성하기 위한 SUT 코드를 직접 호출 2. When to use it - 픽스처 설치 로직이 매우 간단할때 - 테스트를 처음 작성할때라서 아직 픽스처의 어느부분이 계속 반복될지 모를때 - 픽스처 설치 코드를 리팩토링 할때
28. Fixture Setup Pattern In-line Setup 인라인 설치 3. Example Fixture 설치 단점 테스트 코드 중복 -> 깨지기 쉬운 테스트 -> 애매한 테스트 -> 하드 코딩된 테스트 데이터 4. Refactoring notes 리팩토링이 필요하다!
29.
30.
31. Fixture Setup Pattern Delegated Setup 위임 설치 5. Example Fixture 설치 단점장점 테스트 코드 중복 깨지기 쉬운 테스트 여러 동작 냄새들
32.
33.
34. Fixture Setup Pattern Creation Method 생성 메소드 5.1 Example : 익명 생성 메소드 5.2 Example : 인자를 받는 생성 메소드
36. Fixture Setup Pattern Creation Method 생성 메소드 5.4 Example : 픽스처 설치를 위한 테스트 재사용 다른 테스트 클래스에서 생성메소드를 재사용 할 수 있다
37. Fixture Setup Pattern Implicit Setup 암묵적 설치 How it works 테스트 클래스 안에 있는 setUp메소드를 통해 동일한 신선한 픽스처를 생성한다? setUp() 메소드 ?
38. 신선한 Fixture 생성 Test Fixture Method 테스트 픽스처 메소드 Junit 3 - setUp() - tearDown() 고품질 쾌속개발을 위한 TDD 실천법과 도구 -한빛미디어 setUp() testAAA() tearDown() setUp() testBBB() tearDown() … setUp() …… tearDown()
39. 신선한 Fixture 생성 Test Fixture Method 테스트 픽스처 메소드 JUnit 4 - @Before - @BeforeClass - @After - @AfterClass Annotation 애노테이션 마치 주석처럼 @ 기호화 함께 선언적인 형태로 코드에 달려 있는 문장 @BeforeClass 고품질 쾌속개발을 위한 TDD 실천법과 도구 -한빛미디어 @Before @Test @After @Before @Test @After … @Before @Test @After @AfterClass
40. Fixture Setup Pattern Implicit Setup 암묵적 설치 How it works 테스트 클래스 안에 있는 setUp메소드를 통해 동일한 신선한 픽스처를 생성한다! 2. When to use it -같은 테스트 케이스 클래스에 있는 여러 테스트 메소드에서 같은 신선한 픽스처를 필요로 할 때
41. Fixture Setup Pattern Implicit Setup 암묵적 설치 3. Motivating Example 4. Refactoring notes 죄다 메소드 뽑아내기!
42. Fixture Setup Pattern Implicit Setup 암묵적 설치 5. Example setUp() testAAA() tearDown() setUp() testBBB() tearDown() … 단점 테스트 를 이해하기 어렵다 픽스처 안에서 객체를 지역변수에 담을수 없다 setUp() …… tearDown()
43. 신선한 Fixture 생성 설치 메소드의 오용 새 망치가 생기면 전부 못으로 보인다! Fixture Setup Pattern 을 공부했다고 설치 메소드를 남발하면 안좋아요 Setup 메소드에서 최소 픽스쳐가 아닌 일반픽스쳐를 생성한다면 문제가 생길 수 있다. 일반 픽스처는 생성하는데 많은 시간이 필요하기 때문에 느린 테스트의 일반적인 원인이 된다.
44. 신선한 Fixture 생성 혼합형 픽스처 설치 픽스처 설치의 3가지 방법을 서로 철저하게 따로 써야 할 것 같지만 실제로는 이것들을 섞어서 쓸 때 더 가치를 발한다.