JUnit 4.6이 공개됐다. 맘잡고 4.0부터 최근에 적잖은 변화가 있었던 4.5까지 소스를 분석하는 것도 정신이 없는 중인데 금새 4.6이 나와버렸다. 3.8이후로 몇년간 새 버전이 없어서 프로젝트가 죽은 것 아니냐는 비난을 받기도 했던 느릿느릿 JUnit이 4.x대에서는 그 발전의 속도가 무척이나 빠르다.

JUnit이 켄트 벡의 smalltak시절에 만든 것과 거의 유사한 JUnit 1.0의 디자인을 그대로 유지한 채로 3.x대까지 발전해왔던 것에 비해서, 4.0은 애노테이션의 도입과 함께 전체적인 구조와 디자인이 새롭게 바뀌었다. 4.x의 설계의 특징은 확장을 고려한 많은 확장포인트의 도입이다. 마치 유연한 스프링의 컨텍스트 코어를 보는 듯한 그런 느낌이었다. 예상했던 대로 JUnit자체의 기능이 스스로의 확장포인트를 이용해서 점점 보강이 되고 있다. 기존의 JUnit 3.x까지는 println을 그대로 대체할 수 있을 만큼의 간결성이 주요한 특징이었다면, Junit 4.x는 실전에서 활용가능한 고급 테스트 코드를 작성하는 필요로 하는 기법들을 최대한 적용할 수 있도록 하는데 특징이 있는 것 같다. 물론 애노테이션의 도입으로 그만큼 테스트 코드 자체가 간단하게 된 것도 중요하지만. 그 역시 확장포인트를 스스로 활용해서 애노테이션을 통한 정보를 처리하게 한 것이므로, 얼마든지 다른 방법으로 대치 가능하다.

 

4.6에는 크게 두가지의 실험적인 기능이 포함이 되어있다. 하나는 JUnitMax의 코어부분이 포함된 것이고, 하나는 테스트 스케줄링에 관한 다양한 전략을 제공하는 부분이다.

JUnitMax는 이클립스에서 동작하는 리얼타임 테스트-빌드 플러그인이다. 테스트 또는 메인 코드의 작성과 동시에 테스트가 자동으로 수행되면서 마치 자동빌드의 한 단계처럼 테스트가 동작하도록 만들어 주는 것이다. 그래서 쉽게 오해하는 것은 JUnitMax는 단지 자동 테스트 실행툴 정도라고 생각하는 것이다. 하지만 켄트 벡이 설명하는 JUnitMax의 핵심기술은 테스트 실행 순서를 결정하는 기능이다. 이 Max의 코어 부분은 이제 JUnit 4.6에서 활용이 가능하도로 통합되었다. Max코어에서는 기존의 테스트 수행결과를 기억하고, 이를 새로운 테스트 실행시에 순서를 결정하는데 반영하도록 한다. 그래서 새로운 테스트를 오래된 테스트 보다 먼저, 빠르게 동작하는 테스트를 느린 테스트보다 먼저, 최근에 실패한 테스트를 실패한지 오래된 테스트보다 먼저 수행하게 해준다. 자주, 빠르게 전체 테스트를 수행하는데 있어서 적절한 테스트의 순서를 결정해주고 빨리 결함을 발견하게 해주는 것이 JUnitMax의 핵심기술이라는 것이다. JUnitMax플러그인은 백그라운드에서 거의 병렬로 테스트가 진행되기 때문에 이런 순서를 결정하는 기술이 매우 중요하다고 볼 수 있다.

어쨌든 놀랍게도 이 코어는 JUnit에 이제 포함되서 제공된다. UI를 포함한 이클립스 플러그인은 여전히 상용프로그램으로 제공되지만.

두번째는 테스트 스케줄링과 관련된 것인데, 테스트를 수행하는 전략을 확장할 수 있게 한 것이다. 단지 순차적인 실행뿐 아니라, 두개 이상의 병렬 클래스, 병렬 메소드의 테스트를 수행하는 것도 가능해졌다. 이 기능은 앞으로 MaxCore에 병합이 될 것이라고 한다. 어쟀든 적절한 전략을 도입하면 서로 영향을 미치지 않는 많은 테스트를 병렬로 빠르게 진행하는 것이나 분산 테스트 등도 가능하지 않을까 싶다.

 

4.x대의 가장 큰 특징인 애노테이션 방식의 도입. 이를 통한 POJO 테스트 클래스 작성. 그리고 Match 인터페이스를 이용한 가독성 높은 assert문 작성방법의 도입. Runner의 확장 기능. 그리고 이제 MaxCore와 수행전략에 관한 부분까지 JUnit은 매우 빠르고 혁신적으로 발전하고 있다. 동시에 JUnit자체를 손쉽게 확장해서 테스트 프레임워크를 만들 수 있도록 많은 확장포인트를 제공한다. 스프링 2.5에서 도입된 TestContext Framework 기술이 바로 그것을 잘 활용하는 예이다.

 

아무튼 그래서 4.x 구조와 확장방법 등에 대해서 좀 소스를 보고 공부를 하고 정리를 하려고 하는데, 3.x대처럼 좀 깔끔한 설계문서 하나 만들어주면 안되나… 아쉬운 내가 알아서 분석하고 그려봐야지. 이번주말에 노가다 프로젝트 끝나면 바로 시작이다.

Related posts:

  1. JUnitMax 1.2.1 업데이트
  2. JUnit 4.7 분석 (1) JUnit 4.7 코드 첫인상
  3. JUnit Max – Kent Beck
  4. JUnit 4.7 분석 (0) 시작
  5. Spring 3.0 (50) JUnit 4.5~4.7 겨우 지원성공 그리고 계속되는 악몽
  6. Spring 3.0 (49) JUnit 4.7로 변경과 상속의 폐해
  7. JUnitMax 개발/비즈니스 중단되다
  8. JUnit assert 매쉬업
  9. JUnit 4.7과 OCP
  10. 유쾌한 이슈처리 재촉 메일
  11. 테스팅 프레임워크는 직접 만들어 써보자
  12. Spring 3.0 (37) 스프링 모듈-라이브러리 의존관계 매트릭스 업데이트와 CTDD
  13. Spring 3.0 (51) @Rule 지원성공 그리고 Formatter, ConversionService의 전면 등장

Facebook comments:

to “JUnitMax Core가 포함된 JUnit 4.6 릴리스”

  1. I like what you guys are usually up too. Such clever work and coverage! Keep up the excellent works guys I’ve incorporated you guys to our blogroll.| а

  2. Hi there, after reading this remarkable paragraph i am also happy to share my experience here with friends.|

  3. very couple of web-sites that happen to be detailed below, from our point of view are undoubtedly nicely worth checking out

  4. Hi there! This post couldn’t be written much better! Looking at this post reminds me of my previous roommate! He continually kept talking about this. I will send this post to him. Fairly certain he’s going to have a good read. Many thanks for sharing!

  5. This is a topic that is close to my heart… Best wishes! Where are your contact details though?| а

  6. You made some really good points there. I looked on the web for more information about the issue and found most people will go along with your views on this site.| а

  7. I enjoy reading a post that can make people think. Also, many thanks for allowing me to comment!| а

  8. Hey there! I’ve been reading your blog for some time now and finally got the courage to go ahead and give you a shout out from Kingwood Tx! Just wanted to say keep up the fantastic job!| а

  9. Wonderful story, reckoned we could combine several unrelated information, nonetheless truly worth taking a look, whoa did one study about Mid East has got far more problerms also

  10. Nicely put, Appreciate it! northwest pharmacy

  11. Quality posts is the secret to attract the users to pay a visit the site, that’s what this website is providing.|

  12. Hi there everyone, it’s my first pay a quick visit at this web site, and post is in fact fruitful for me, keep up posting these posts.| а

  13. the time to study or visit the material or web sites we have linked to below the

  14. When someone writes an article he/she maintains the thought of a user in his/her mind that how a user can be aware of it. Therefore that’s why this piece of writing is great. Thanks!| а

  15. I’m amazed, I have to admit. Seldom do I come across a blog that’s equally educative and entertaining, and let me tell you, you have hit the nail on the head. The issue is something that too few men and women are speaking intelligently about. Now i’m very happy I stumbled across this in my hunt for something concerning this.| а

  16. we came across a cool website that you simply may delight in. Take a search for those who want

  17. Link exchange is nothing else but it is just placing the other person’s webpage link on your page at suitable place and other person will also do same in support of you.| а

  18. Nicely put. Appreciate it. viagra without doctor prescr_iption

  19. we like to honor several other web web sites around the web, even though they arent linked to us, by linking to them. Underneath are some webpages worth checking out

  20. Fine facts. Cheers. Am I Too Young To Take Cialis

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha