개 요
Spring을 사용하는 이유 에서 이야기한것과 같이 spring을 사용하는 이유중 하나가 테스트 기술이다.
하지만, 현업에서 개발을하다보면 Spring을 사용하고 있지만 테스트 코드를 작성하지 않는경우를 많이 보게되고
"그냥 주변에서 많이 사용하고 접근성 좋으니까" 라는 생각으로 정확한 용도를 모르고 사용하는 경우도 있다.
Spring은 정말 잘알고 사용하면 효율적인 개발이가능하게 해주지만, 그렇치 않다면 애물단지에 불과하다.
왜 Spring에서 테스트 기술이 중요한것일까?
먼저, 테스트는 자신의 제품에 대한 신뢰의 도구로 사용되는것은 개발자라면 누구나 공감할 것이다.
테스트가 되지않는 제품은 개발자 본인도 신뢰하지 못하며
이슈가 발생했을 때 대응이 늦어지고
새로운 기능을 추가할 때도 영향도 파악이 되지않아 신규기능추가에도 자신감이 떨어진 상태로 개발하게 될 것이다.
자신에 코드에 자신감이 떨어지면 주변사람들은 더욱 신뢰를 하지 못하게되고
결국, 실력없는 개발자로 되게 될것이다.
이렇듯 테스트는 개발자 본인을 위해서는 반드시 필요한 것이다.
하지만, 매번 테스트를 하는 것은 개발자에게 귀찮은일이고 정신적인 스트레스를 주는 일이다.
이런 개발자의 힘든부분을 Spring이 덜어 준다.
Spring이 어떻게 테스트에 도움을 주는가?
DI 테스트 방법
1) 스프링컨테이너 없이 테스트
테스트 수행속도가 가장 빠르고 테스트 자체가 간결하다.
테스트를 위해 필요한 오브젝트 생성과 초기화가 단순하다면 이 방법이 좋다.
2) 스프링설정을 이용한 DI 방식의 테스트
여러 오브젝트와 복잡한 의존관계를 갖고 있는 객체를 테스트해야할 경우 편리하다.
테스트에 application context를 사용하는 경우 테스트 전용 설정파일을 따로 만들어 사용하는 편이 좋다.
3) 컨텍스트에서 DI 받은 객체에 다시 테스트코드로 수동 DI 해서 테스트
테스트 설정을 따로 만들었다고 하더라도 때로는 예외적인 의존관계를 강제로 구성해서 테스트하는 경우 사용한다.
이때 컨텍스트에서 DI 받은 객체에서 다시 테스트 코드로 수동 DI해서 테스트하는 방법을 사용하면 된다.
'framework > spring' 카테고리의 다른 글
디자인 패턴 (0) | 2020.03.19 |
---|---|
Spring 템플릿 활용하기 (0) | 2020.03.12 |
MVC 개발 시 테스트 사항 (0) | 2020.02.29 |
왜 스프링은 싱글톤으로 bean을 만드는가? (0) | 2020.02.12 |
JPA 도입 (0) | 2020.01.27 |