참조 : Spring MVC 10장

단위 테스트란?

The basic definition of a unit test is “a discrete test condition to check correctness of an isolated software module.”

진짜 단위 테스트라고 하려면 다음과 같은 특징을 가져야 합니다.

1. 빠르게 실행되어야 합니다.
- DB 커넥션이나 외부 자원등을 읽느라 테스트가 느려지면 해당 테스트의 유용성을 급격히 떨어집니다. 즉각적인 응답을 받을 수 있어야 합니다.

2. 외부 설정이 필요없습니다.
- 테스트 코드를 빠르게 실행을 하고 외부와 종속성을 제거하기 위함입니다.

3. 다른 테스트들과 독립적이어야 합니다.
- 완전히 독립적인 테스트여야 합니다. 다른 테스트를 먼저 또는 나중에 실행해야 하는 관계는 없어야 합니다.

4. 외부 자원이 필요없습니다.
- DB 커넥션이나 웹서비스에 종속성을 가지면 안됩니다.

5. 흔적을 남기지 않습니다.
- 단위 테스트를 계속해서 반복적으로 수행하기 위해서는 흔적이 남으면 안됩니다. 외부 자원에 종속되지 않는 것이 도움이 됩니다.

6. 가능한한 작은 단위로 테스트 합니다.
- OO에서는 보통 메소드 단위로 작성 합니다.

진정한 단위 테스트라면 Spring의 ApplicationContext나 BeanFactory에서 bean을 가져와서 테스트를 하면 안 되는 거군요. 외부 자원과 설정에 의존하게 되는 거니깐 그냥 TestCase만 가져다가 테스트를 만들면 되겠습니다. 다른 테스트들에 독립적인 테스트 메소드들을 구현해야겠습니다.