올 상반기 발표 자료입니다. 이클립스 기반으로 되어 있습니다.
https://bit.ly/oktdd2022
* 개발환경 세팅
* Getting Started TDD
* TDD Concept
* TDD Misunderstood
* Test 단계와 유형
* assert 종류
* 리팩터링
* Maven

올 상반기 발표 자료입니다. 이클립스 기반으로 되어 있습니다.
https://bit.ly/oktdd2022
* 개발환경 세팅
* Getting Started TDD
* TDD Concept
* TDD Misunderstood
* Test 단계와 유형
* assert 종류
* 리팩터링
* Maven
과거의 이야기들입니다. Kent Beck, 익스트림 프로그래밍과 JUnit의 창시자. 지난 20년 동안을 회고해보면서 그의 사상에 영향을 준 것들과 특히 TDD(테스트 주도 개발), 디자인 패턴, 익스트림 프로그래밍(XP)의 역사에 대해 얘기합니다.
그의 얘기로는 좋은 아이디어는 그에 따른 충분한 시간을 필요로 합니다. 성숙하고 열매를 맺기위한 시간 말이죠.
http://www.okjsp.pe.kr/bbs?act=DOWN&maskname=1219467188527&fileName=3759 Kent Beck - Test Driven Development, Patterns and Extreme Programming.mp3Relating anecdotes from the past, Kent Beck, the father of Extreme Programming and JUnit, reflects back on the impact his ideas have had in the last 20 years, especially with respect to the history of Test Driven Development (TDD), Design Patterns, and Extreme Programming (XP). According to him, good ideas take about that much time to mature and come to fruition.
from: http://feeds.conversationsnetwork.org/channel/itc
진도를 마쳤습니다. 시험봐야죠. 다른 말로 테스트.
생활 속에서 이러한 이유로 테스트라는 단어는 항상 실체의 뒤에 위치합니다.
TDD, Test Driven Development. 흔히 테스트 주도 개발이라고 얘기하는 것입니다.
학원 안 다니고 주행에 도전했다가 몇 번 씩 탈락한 뒤에 합격해서 받은 운전 면허가 TDD로 받은 운전면허증일까요. ㅋㅋ. 이 경우는 테스트가 학습을 유발했다고도 볼 수 있죠. 영어로 Heuristic 이라고 얘기하는 학습법이요.
이와는 반대로 건드리기 전에 테스트를 해야하는 경우도 있습니다.
If we want to avoid talking to the database, we can subclass PermitRepository like this:심각하게 고민해봐야겠습니다.
public class TestingPermitRepository extends PermitRepository {
...
1과 1을 인수로 하는 add() 메소드의 결과는 2와 같아야 된다는 뜻인데, 아직 add() 메소드가 만들어지지 않았지만 이렇게 먼저 선언, 또는 정의합니다. add() 메소드의 결과 동작을 먼저 만드는 것이죠. 에러 납니다. 컴파일도 안됩니다. 아직 없으니까요.
그 다음 동작은 add() 라는 메소드를 만드는 것입니다. 그럼 저 테스트 코드로 add() 메소드의 결과를 확인해 볼 수 있겠죠. 이렇게 개발을 하니 모든 메소드는 자동으로 실행할 수 있는 테스트 코드들을 갖고 있게 됩니다. 이게 모이게 되면 전체 애플리케이션을 테스트할 수 있는 집합체가 구성되는 것이죠.
그런데 이런 방식에는 테스트라는 단어의 레거시가 너무 강했습니다. 일반적인 상식에서는 테스트라 함은 후에 위치한다는 것이 자연스럽기 때문입니다.
그러나 테스트를 작성하고 어떻게 테스트할 것인가 하는 관점이 아닌, 행위(behavior)에 대해 생각해 본다면 어떨까? 여기서 말하는 행위란 애플리케이션이 어떻게 동작'해야' 하는가, 즉 본질적으로 그것의 명세를 말하는 것이다.
Working Effectively With Legacy Code 내용 중에 테스트 가능한 프로그래밍 기법이 있는데, 재밌는 예제였습니다.
올바른 값을 가져오는지 테스트하기 위해서 탐침(probe)과도 같은 클래스를 만들어냅니다. 보통 메소드 안에서 흘러가는 흐름을 테스트 때문에 감지를 위한 것이지요.
늪 괴물과 레거시 코드의 공통점