이클립스에서 JUnit4 테스트의 특정 테스트메소드만 실행하기
가끔 하는 뒷북치기.
이게 언제부터 되는 것인지는 모르겠다. 아무튼 우연히 JUnit으로 만든 테스트코드를 실행하다가 특정 테스트메소드만 실행하는 것이 가능하다는 것을 알게되었다.
JUnit4의 기본 TestRunner는 클래스단위로 테스트를 수행한다. 해당 클래스의 모든 @Test메소드를 실행한다. 경우에 따라 특정 테스트메소드를 제외하고 싶다면 @Ignore를 부여해서 임시로 해당 테스트메소드가 실행되지 않게 할 수는 있다.
이클립스는 테스트 실행코드를 만들지 않아도, 테스트스윗을 만들지 않아도 JUnit창이나 소스에서 바로 Run as JUnit Test를 통해서 하나의 테스트클래스나 한 패키지 아래의 모든 테스트를 실행할 수 있다.
그런데 만약 테스트메소드가 많은 테스트에서 단 한개의 테스트만 달랑 실행하고 싶다면 다음과 같이 하면 된다.
- 실행하고 싶은 테스트메소드의 이름으로 커서를 가져간다.
- Run as JUnit Test로 테스트를 실행한다. (단축키 Shift-Alt-X + T 또는 컨텍스트 메뉴나 메인 메뉴에서 Run > JUnit Test로 실행)
이런 편한 기능이 있었을 수가.
이래서 이클립스의 Help Contents를 가끔 읽어줘야 한다. Contents의 각 대표항목의 Tips and tricks항목만 읽어도 충분하다. 그것만 해도 워낙 양이 많아서 그렇지.. getter/setter를 자동으로 만들어주는 기능이 Shift-Alt-S + R을 쓰지 않아도, 필드 이름에 가서 ctrl-1만 해도 된다는 것도 어제 알았다. ctrl-1(quick-fix)는 에러가 났을 때 수정하는 용도로 쓰는 것 외에도 상당히 많은 영리한 기능을 적용하는데 사용할 수 있다. 이것만 잘써도 코드 작성 속도가 두배쯤 빨라질 수도 있을 듯.
참, 내가 쓰는 이클립스 버전은 3.5이고 JUnit은 4.6이다.
엇… 게터 세터 Ctrl + 1로 만드는건 몰랐네요.
한번에 전부 다 생성할 때 말고 나중에 추가한 필드에 대한 게터세터 만들 때 쓰면 되겠군요.
우왕.. 굳!
썬/ 그렇다면 단일 테스트 메소드 실행은 알았단 말인가!
그건 예전에 박재성 형님 블로그에서 봤어요.
http://javajigi.tistory.com/192
이클립스 3.4 버전에서 JUnit 3.x 테스트도 되거덩~
영회/ 나만 몰랐단 말인가!
반갑습니다..^^ 지나가는 길에 잠시 들렀습니다. 언제나 좋은 자료들이..^^
JUnit에서는 @Test를 그냥 주석으로 막아버려도 실행이 되지 않습니다.
@Ignore조차 쓰기 귀찮으실때 강추합니다..^^
Shift-Alt-X + T 대신 F11도 메소드 위에서 누르니까 그 메서드만 실행되더군요; (F11은 전 오늘 처음 알았습니다;)
benelog/ 저는 F11누르면 디버거가 뜹니다. -_-; 혹시 단축키 설정이 다른 맥용 이클립스인가요?
아, Ctrl + F11입니다;F11은 디버거이고, Ctrl + F11이 실행..
benelog/ Ctrl+F11은 Run명령 같은데요? 최근에 실행한 것을 커서 위치에 상관없이 그대로 다시 반복해주기만 하는.
제 PC(Eclipse Version: 3.4.2)에서는 커서 위치에 따라 다르게 테스트가 실행되어서 다그런줄 알았는데 아닌가보네요 ^^; 찾아보니 현재 편집중인 resource에 대해서 Project properties에서 Run/Debug Setting에서 해 놓은데로 실행이 되는것 같네요. 그게 Junit에서 메소드 단위로도 인식이 가능하고, 커서위치도 인식하는 것 같기는한데 안 그렇게 되는 경우도 있나봅니다;
암튼 , Ctrl+ F11이 설정을 타는 것이라면 Shift-Alt-X + T 가 더 낫겠네요~ ^^;