테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체

1,306 views

Published on

테스트 주도 개발 By googletest - 1장, 다중 통화를 지원하는 money 객체
관련글: http://surpreem.com/archives/45

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,306
On SlideShare
0
From Embeds
0
Number of Embeds
183
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체

  1. 1. 테스트 주도 개발<br />by googletest<br />1장. 다중 통화를 지원하는 Money 객체<br />
  2. 2. 프로젝트 구성<br />
  3. 3. 디렉터리 구조<br />솔루션 디렉터리<br />googletest 프레임워크<br />개발 프로젝트 디렉터리<br />테스트 프로젝트 디렉터리<br />Win32 용용 프로그램<br />프로젝트 기본 구조<br />테스트 프로젝트<br />-googletest 헤더, 라이브러리 참조<br />
  4. 4. googletest 참조 설정<br />C/C++ – General – Additional Include Directories: $(SolutionDir)gtestinclude<br />Linker – General – Additional Library Directories: $(SolutionDir)gtestlib<br />
  5. 5. googletest 라이브러리 설정<br />개발 프로젝트 런타임 설정<br />googletest라이브러리<br />테스트 프로젝트 런타임은 개발 프로젝트 런타임에 맞춰 설정<br />
  6. 6. 프로젝트 의존성 설정<br />Build Events – Post-Build Event<br />테스트 프로젝트 빌드<br /> 개발 프로젝트 빌드<br /> 테스트 프로젝트 실행<br /> 테스트 결과 출력<br />트리거<br />자동 실행<br />
  7. 7. 테스트 프로젝트 main()<br />googletest헤더<br />googletest실행 설정<br />
  8. 8. 출~바알~<br />
  9. 9. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  10. 10. $5 * 2 = $10</li></ul>DollarTest.cpp 추가<br /><ul><li>public 멤버 변수
  11. 11. 생각 못한 부작용
  12. 12. 금액에 정수 사용</li></ul>테스트 먼저<br />완벽한 인터페이스를 상상하며<br />DollarTest.cpp<br />
  13. 13. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  14. 14. $5 * 2 = $10
  15. 15. amount를 private으로 만들기
  16. 16. Dollar 부작용(side effent)?
  17. 17. Money 반올림?</li></ul>컴파일 문제<br /><ul><li>Dollar 클래스 없음
  18. 18. 생성자없음
  19. 19. times(int) 메서드 없음
  20. 20. amount 필드 없음</li></ul>Dollar 클래스 추가(Dollar.h)<br />
  21. 21. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  22. 22. $5 * 2 = $10
  23. 23. amount를 private으로 만들기
  24. 24. Dollar 부작용(side effent)?
  25. 25. Money 반올림?</li></ul>Dollar 클래스 추가<br />Dollar.h<br />컴파일 문제<br /><ul><li>Dollar 클래스 없음
  26. 26. 생성자없음
  27. 27. times(int) 메서드 없음
  28. 28. amount 필드 없음</li></ul>Dollar.h참조 추가<br />DollarTest.cpp<br />
  29. 29. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  30. 30. $5 * 2 = $10
  31. 31. amount를 private으로 만들기
  32. 32. Dollar 부작용(side effent)?
  33. 33. Money 반올림?</li></ul>Dollar생성자 추가<br />컴파일 문제<br /><ul><li>Dollar 클래스 없음
  34. 34. 생성자없음
  35. 35. times(int) 메서드 없음
  36. 36. amount 필드 없음</li></ul>Dollar.h<br />
  37. 37. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  38. 38. $5 * 2 = $10
  39. 39. amount를 private으로 만들기
  40. 40. Dollar 부작용(side effent)?
  41. 41. Money 반올림?</li></ul>times()스텁,amount 추가<br />Dollar.h<br />컴파일 문제<br /><ul><li>Dollar 클래스 없음
  42. 42. 생성자없음
  43. 43. times(int) 메서드 없음
  44. 44. amount 필드 없음</li></li></ul><li>Visual Studio Output<br />테스트 실패<br />공포의 빨간 막대<br />gtest-gbar (googletest UI)<br />
  45. 45. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  46. 46. $5 * 2 = $10
  47. 47. amount를 private으로 만들기
  48. 48. Dollar 부작용(side effent)?
  49. 49. Money 반올림?</li></ul>가장 빨리 테스트를 통과하는 방법?<br />amount 값<br />환희의 초록 막대<br />테스트 성공<br />
  50. 50. TDD 주기<br />작은 테스트 하나 추가한다.<br />모든 테스트를 실행해 테스트가 실패하는 것을 확인한다.<br />조금 수정한다.<br />모든 테스트를 실행해서 테스트가 성공하는 것을 확인한다.<br />중복을 제거하기 위해 리팩토링을 한다.<br />지금은 여기<br />
  51. 51. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  52. 52. $5 * 2 = $10
  53. 53. amount를 private으로 만들기
  54. 54. Dollar 부작용(side effent)?
  55. 55. Money 반올림?</li></ul>DollarTest.cpp<br />테스트 코드와 중복:5, 2<br />중복은 어디?<br />
  56. 56. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  57. 57. $5 * 2 = $10
  58. 58. amount를 private으로 만들기
  59. 59. Dollar 부작용(side effent)?
  60. 60. Money 반올림?</li></ul>times()메서드 안으로 옮기면?<br />테스트 통과<br />
  61. 61. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  62. 62. $5 * 2 = $10
  63. 63. amount를 private으로 만들기
  64. 64. Dollar 부작용(side effent)?
  65. 65. Money 반올림?</li></ul>5생성자에서 넘어 오는 값<br />5 대신 amount 사용<br />
  66. 66. To do:<br /><ul><li>$5 + 10CHF = 10$(환율 2:1)
  67. 67. $5 * 2 = $10
  68. 68. amount를 private으로 만들기
  69. 69. Dollar 부작용(side effent)?
  70. 70. Money 반올림?</li></ul>multiplier == 2<br />테스트 통과<br /> 첫 번째 테스트 완료<br />마무리…<br />

×