2008.03.31 18:07

이클립스에서 JUnit 사용하기

'지름길로 빠르게 배울 수 있는 자바 프로그래밍'에 나와있는 예제를 토대로 JUnit을 사용해 보았다. 이클립스를 사용하고 있고, 이클립스 내에 JUnit이 기본으로 탑재되어 있으므로 바로 테스트 케이스를 작성하고 테스트를 해볼 수 있었다.

먼저 이클립스를 띄우고 프로젝트를 하나 만든다.

사용자 삽입 이미지
여기에서는 자바 프로젝트를 선택했다.
사용자 삽입 이미지

그리고 나서 프로젝트 이름은 Tdd로 주었고, 다른 내용들은 그대로 둔다.
사용자 삽입 이미지

자바 설정에서 라이브러리 탭에 가서 'Add Library' 버튼을 누른다.
사용자 삽입 이미지
라이브러리에 보면 JUnit이 있는데, 선택하고 Next를 누른다.
사용자 삽입 이미지
JUnit 라이브러리의 버전을 선택할 수 있는데, 그대로 3.8.1 버전을 사용해 보자.
사용자 삽입 이미지

나머지 설정들은 적당히 채워준다.

그리고 나서 이제 TestCase를 작성하기 위해 프로젝트에 JUnit Test Case를 하나 생성한다.
사용자 삽입 이미지

이렇게 하면 새 JUnit Test Case를 설정하는 창이 하나 뜨는데, 아래와 같이 입력하였다.
사용자 삽입 이미지
다른건 건드리지 않고, Test Case의 이름만 지정해 주었다.

사용자 삽입 이미지

테스트 메소드로 testCreate()를 정의만 한후, 실제로 테스트를 돌려본다. Run As의 JUnit Test를 선택한다.
사용자 삽입 이미지

현재 테스트 메소드인 testCreate() 내의 테스트를 수행하는 코드가 없기 때문에, 테스트는 성공적으로 완료된다.
사용자 삽입 이미지
이번에는 일부러 테스트를 실패하도록 존재하지 않는 클래스를 사용하는 문장을 작성하여 테스트를 수행해 본다. 역시나 테스트가 실패한다. JUnit Perspective의 아래쪽에는 Failure Trace를 보면 왜 에러가 발생하였는지에 대한 원인이 나타난다.

사용자 삽입 이미지

테스트를 성공하기 위해 이제 없었던 Student 클래스를 만들어준다. Test Case에서 사용했던 생성자 서명도 맞춰준다.
사용자 삽입 이미지

이번에는 assertXXX() 메소드를 사용해 보기 위해서, StudentTest 코드를 수정해 본다.
사용자 삽입 이미지
Student 클래스는 적당한 getter 메소드를 추가해주고, private 필드로 name을 저장하게끔 하였다. 그리고 나서 assertEquals() 메소드를 작성하여 student 객체의 name 필드의 값이 실제로 생성자를 통해 할당하였던 것과 같은지를 확인하는 코드를 작성하였다. 그런 다음 테스트를 수행해 본다.
사용자 삽입 이미지

테스트가 성공적으로 완료됨을 확인할 수 있다.

이번에는 일부러 테스트가 실패하도록 "Jane Doe"의 값을 "Jane Dose"로 고쳐서 테스트를 수행해 본다.
사용자 삽입 이미지
역시나 테스트를 통과하지 못한다.

처음으로 JUnit이란걸 접해봤고, 짧게나마 돌려봤는데 IDE의 도움으로 그리 힘들이지 않고도 테스트를 수행할 수 있었다.
'지름길로 빨리..' 자바책에서는 TDD를 이렇게 설명하고 있다.
TDD는 이러한 테스트를 통해 시스템을 명시하는 기법이다. 테스트를 결과 코드를 작성하기 전에 만들며, 먼저 결과 코드를 구현하지 않고 구현한 것에 대해서 테스트를 작성하지 않는다. TDD는 하루의 코드에서 반복되는 간단하고 짧은 사이클의 구조이다. 각 사이클은 몇 초에서 몇 분간이며, 다음 단계로 구성된다.

ㆍ단위(unit) 테스트의 형식으로 코드로 명세를 작성한다.
ㆍ테스트가 실패하는 것을 확인한다(명세에 해당하는 부분을 아직 구현하지 않았다).
ㆍ명세를 만족하는 코드를 작성한다.
ㆍ테스트가 성공하는 것을 보인다.
ㆍ시스템의 깨끗한 코드 상태를 유지하기 위해서 "재구성" 또혹은 코드를 재작성한다.

이러한 테스트는 몇가지 장점을 제공하는데,
- 코드수준 : 버그의 수 최소화. 다른 클래스에 의존하지 않으므로 시스템 디자인을 향상시킴.
- 기능의 문서화.
- 적응성 : 테스트를 가지고 있으므로 이미 작업한 다른 부분을 망가뜨릴 염려없이 코드의 질을 높인다.
- 일정한 개발속도 : TDD 각 사이클이 매우 짧기 때문에, 피드백 수준이 높음.

출처 : '지름길로 빠르게 배울 수 있는 자바 프로그래밍'
출처 : 유쾌한 코더, 이씨 블로그
Trackback 0 Comment 0