개발환경/이클립스

eclipse에서 Junit4 실행시 클래스 변경이 즉시 반영되지 않는 이유

엄지사랑 2008. 7. 5. 03:43
"이클립스내에서 정확한 테스트를 하려면 반드시 메이븐 빌드된 모든 결과물을 삭제(클린)해야만 한다"

정확한 이유는 알수가 없었다.
그러나 추측컨데 다음과 같은 테스트를 통해 나만의 결론에 도달했다.

기본실행환경
OS : MS Windows Vista Home Edition
Eclipse : 3.3.2 WTP
Maven 2.0.9

현상 : 아무리 클래스를 변경하고 강제로 fail 하도록 코딩해도 정상적이다. 그러나 특정 시점에는 아무리 오류를 수정해도 계속 에러가 난다. 미친다~~~. 그런데 메이븐으로 빌드하고 나면 변경된 내용이 반영된다. 허참..

추정 : 이클립스가 컴파일하지 않는다.
결과 : 이클립스가 제대로 컴파일하는지 알기 위해 기본 컴파일 경로를 변경해봤으며 컴파일된 내용을 확인해 봤다. 정상적으로 컴파일한다.

추정 : 메이븐을 빌드하면 반영되므로 클래스를 참조하는게 아니라 레파지토리의 jar를 참조한다.
결과 : 메이븐으로 클린하게 되면 정상적으로 반영된다. 그러므로 레파지토리를 참조하는것은 아니다.

최종 결과 : 메이븐으로 빌드를 하게 되면 패키징 jar, 클래스(classes, test-classes)등이 생긴다. 이클립스의 경로를 classes가 아닌 eclipse-classes로 변경하면 ClassNotFoundException이 발생했다. 종합헤보면 이크립스가 프로젝트에서 클래스를 로딩할 수 있는 모든 자원을 클래스패스에 두는 듯 하다. 그러므로 내가 아무리 변경해도 무엇이 로딩된는지 알수 없을 것이다.

즉, 이클립스내에서 정확한 테스트를 하려면 반드시 메이븐 빌드된 모든 결과물을 삭제(클린)해야만 한다는 것이다.