올 상반기 발표 자료입니다. 이클립스 기반으로 되어 있습니다.
https://bit.ly/oktdd2022 

* 개발환경 세팅
* Getting Started TDD
* TDD Concept
* TDD Misunderstood
* Test 단계와 유형
* assert 종류
* 리팩터링
* Maven

tdd

http://browsershots.org/

세상에 브라우저가 참 많습니다.

결과화면입니다.

  1. lovedev 2009.04.27 10:24

    와..이거 대박인데요 ㅋㅋㅋ

고전적인 자바 클래스의 테스트는 main() 메소드에 값을 찍어보는 코드를 넣어서 콘솔에서 확인합니다. 이클립스에 익숙해진 덕에 JUnit에서 System.out.println() 집어 넣는 것은 초딩같은 습관이라고 생각을 "저만"했었습니다. 하지만, 찍어본다는 것 그리고 그것을 눈으로 확인하는 것은 굉장한 심리적 안정감을 주기는 합니다. 아직 assertEquals() 는 보이지 않는 신뢰가 필요하기 때문이죠.

httpunit의 테스트코드를 보니 재밌는 부분이 있었습니다. 상당히 많은 수의 테스트케이스에 main() 메소드가 있었고, 그 메인메소드는 JUnit을 기반으로 해당 테스트코드를 수행하도록 만들어주는 것이었습니다.


suite() 메소드를 inline 리팩토링하면 junit.textui.TestRunner.run( new TestSuite( EncodingTest.class ));  를 통해서 실행을 합니다. Java Application 으로 실행한 결과는 다음과 같습니다.

..............
Time: 3.813

OK (14 tests)

물론 이 클래스는 JUnit을 통해서도 실행됩니다.

다른 사람의 코드를 읽는 것, 프로그래머 소통의 시작이 아닐까 생각해봅니다.

참고로 HttpUnitTest 클래스의 상속구조입니다. ctrl+T 로 이클립스에서 볼 수 있습니다.


 

  1. iolo 2008.11.03 22:33

    대부분의 assertXXX 메소드들은 첫번째 파라메터로 메시지를 줄 수 있지 않나요?
    제 경우엔 unit test 안에서만 System.out과 System.err을 쓴답니다^^;

    • kenu허광남 2008.11.04 01:55 신고

      메시지가 성격이 다르죠. 보통은 파라미터에 값을 찍어보니까요.
      하긴 실제 코드에서 System.out , System.err 쓰는 것보다는 테스트코드에서 쓰는 게 훨씬 낫죠.

사용자 삽입 이미지

아주 올드한 디버깅 자바부터 제가 갖고 있는 책은 7권 정도 됩니다.
디버깅 자바: 버그 잡는 방법에 대한 일반론부터 정책들까지 다뤄집니다. (2000년 번역)

실용주의 프로그래머를 위한 단위 테스트 with JUnit : 가장 얇습니다만 굉장히 실용적입니다. (2004년 번역)

이클립스 기반 프로젝트 필수 유틸리티 : 국내 최초의 협업을 주제로 한 책입니다. JUnit과 Ant의 랑데뷰가 그려집니다.(2004년)

테스트 주도 개발 : 이게 다 이 책 때문입니다. (2005년 번역)

지름길로 빠르게 배울 수 있는 자바 프로그래밍 : 미스테리한 책입니다. 일단 출판사가 교학사, 뚜시쿵!!! 원제는 Agile Java : Crafting Code With Test-Driven Development. 아하! 그럴만 하겠죠. 자바 기초 서적인데 Hello World 나오기 전에 JUnit부터 나옵니다. 말 다했죠. (2005년 번역)
Unit Testing In Java : 2004년에 사서 아직도 다 못 봤습니다. UI, 웹, 동시성 등 다양한 영역에서 테스트 방식을 알려줍니다.

Working Effectively With Legacy Code : 작년 11월에 사서 아직도 2/3밖에 못 읽었습니다. 혹자의 서평이 이 책은 TDD의 실무 적용판이다라고 적절하게 하신 듯 합니다.

이 외에도 더 있습니다. 기억이 나거나 습득하게 되는 대로 계속 포스팅하고 싶습니다. ^^
  1. songsungkyun 2008.07.12 09:15

    - 테스트주도개발
    - 단위테스트 with junit
    - working effectively with legacy code

    저는 세마리밖에 없네요.

    최근에 업무로 테스트관련일을 조금 했는데
    정말 어려운 것 같습니다.

    어젠 NGC에서 크래쉬 사이언스 : 비행기를 또 보게되었는데
    정말 정말 테스트가 중요하더라구요.
    웹프로래밍이 오류가 그나마 사람을 죽이지 않아서 다행입니다.

    • kenu허광남 2008.07.14 09:34 신고

      개발자는 레밍을 따라가는 쥐가 아닐까 생각되요.
      요즘은 테스트라는 레밍의 피리소리를 듣고 있네요.

  2. 마검린 2008.07.13 15:34

    -테스트주도개발
    -단위테스트 with junit
    외엔 다 안본 거네욧..

    흐음.. 감사드립니다.

한 남자가 있습니다.
애인을 만들고 싶어합니다.
그래서 집을 나섰습니다.
한 사람을 만났습니다. 그리고 물었죠.
남: 여자입니까?
여: 넵.
남: 사귑시다.
여: 뭐 이런 남자가 다 있어. 애인 있어요.
남: 안녕히 가세요.

남자는 테스트 조건을 하나 더했습니다.
애인 없는 여자!
남자는 다시 길을 나섰습니다.
또 만났죠
남: 여자맞죠.
여: 보면 몰라요? 왜요?
남: 애인 있어요?
여: 없어요.
남: 사귑시다.
여: 뭐 이런 남자가 다 있어. 변태같으니라고.
남: 안녕히 가세요.

또 하나의 테스트 조건이 생겼습니다.
나를 변태처럼 안 보는 여자!
남자는 다시 길을 나섰습니다.
또 만났죠
남: 저기요. 여자분이시죠.
여: 네. 그런데요.
남: 애인 있나요?
여: 아뇨.
남: 저 변태처럼 보이나요?
여: 아뇨. 정상인처럼 보이는데요.
남: 그럼 저와 사귀죠.
여: 제 스타일이 아닌데요. 안녕히 가세요.
남: 넵. 안녕히 가세요.

남자는 또 하나의 테스트 조건을 추가했습니다.
이렇게 남자는 여자 고르는 테스트 프레임워크를 만들어서 만나는 여자마다
쉽게 쉽게 테스트를 했습니다.

남자는 결국 웨딩플래너가 되었습니다.

  1. aLex 2007.07.12 17:19

    결론이 멋진데요 ㅎㅎㅎ

  2. 신현석 2007.07.12 18:53

    1) 남: 여자입니까?
    2) 남: 여자맞죠.
    3) 남: 저기요. 여자분이시죠.

    단순히 조건만 추가 된게 아니라 뭔가의 개선이 계속 있었는데요? ㅎㅎ

  3. null 2007.07.12 21:52

    자꾸 시도를 해야 발전하는군요..

+ Recent posts