사실 단위테스트와 통합테스트를 잘 구분하지 못하고 ..테스트 해왔습니다..
문득 ..ksug 글들이나 책들을 보면서 느꼈는데요..지금 스프링 프레임웍을 써서 테스트 하는데 ..
Dao는 어쩔수 없이 DB와 테스트 하게 되고 service 단을 테스트 하다보면 사실 말이 서비스 단이지 ..
SI 특성상 거의 Dao 메소드 테스트 하는 경우 가 대부분 이게 됩니다.. 지금 다시 서비스단에서 단위테스트를 해볼라고 보
니..
대부분이 Dao에서 데이터를 가지고 와서 service에서 간단한 로직으로 처리되는 것들이고 fixture 만들어서 테스트 하는
것이
되려 더 일만 더 되고 실제 나중에 유지 보수에도 별 도움이 안되는 것 같아서요...
컨트롤러 단은 말할것두 없구요...컨트롤러단은 말그대로 통합테스트 느낌...@ContextConfigration 스프링빈을 다
불러와서 테스트 하는데요..
얘는 어케 단위테스트 할지 감도 안잡힙니다... 다른책을 보니 스프링에서 제공하는 MockHttpServlet을 사용하고 간단
히 view에 원하는 view 값이 들어있는지
비교 하라는데 이게 먼 의미가 있는지도 잘 모르겠구요... 혹시 팁을 주신다면 어떤게 있을수 있을까요??
Spring @MVC의 controller는 HttpServletRequset 규약과 독립적으로 쓸 수 있기 때문에 바로 new 키워드로 생성자를 이용해서 테스트할 수도 있습니다.
그런데 @PathVariable 선언이 들어 갔을 때 URL이 정확히 메소드로 넘어가는지 테스트 코드 안에서 검증해보는 것이 필요할 때도 있습니다.
이럴 때 아래 자료가 참고가 될 수 있습니다.
Spring, Junit 에서 session, request scope bean 을 사용하기
[스프링 테스트] 웹 테스트용 WebApplicationContext에 request, session 스코프 빈 등록하기
첫번째 링크에 나와있는 HandlerAdapter를 바로 테스트 코드 안에서 이용하는 방법은 URL이 원하는 Controller와 잘 연결이 잘 되는지는 검증할 수 없고, 지정된 Controller에서 메소드에 먹힌 Annotation이 의도한대로 URL과 연결되는지 정도만 검증할 수 있다는 점을 주의해야 합니다
"
MockHttpServletRequest는 꼭 Spring이 아니더라도 쓸 수 있는 아래 예제도 볼만합니다.
파일 업로드를 하는 Servlet을 MockHttpServletRequest로 테스트하기 : http://benelog.egloos.com/2790336
그런데 Spring @MVC에서는 꼭 HttpServletRequest를 안 써도 테스트 할 수 있게 메소드 시그니처를 자유롭게 쓸 수 있기 때문에 일반 POJO처럼 바로 메소드 파라미터에 필요한 값을 넘겨서 테스트해도 좋습니다.