스프링 부트의 핵심이라고도 볼 수 있는 테스트! 테스트를 안 쓰고 스프링 개발을 진행한다면 그건 반쪽짜리 스프링 개발자로 볼 수 있다.
테스트를 자동화할 수 있다. -> 빠르게 테스트가 가능하다
전체 코드를 작성하지 않아도 메소드 하나라도 테스트가 가능하다
리팩토링 시 유용하다. -> 코드 일부분을 고쳤을 때 잘 작동하는지 빠르게 확인 가능하다
결과가 맞는지 일일히 확인할 필요가 없다.
테스트는 언제 어디서 실행하더라도 같은 결과가 나와야 한다.
또한 테스트는 너무 포괄적이어서는 안된다. 문제가 생겼을 경우 어느 파일의 어느 메소드에서 생긴 문제인지 정확히 알아야 하기 때문이다.
이렇게 중요한 테스트를 개발자들은 잘 동작하는 부분만 테스트하거나 일부분만 테스트하고 넘어 가기도 한다. 아무리 다음 기능 구현으로 넘어가고 싶더라도 테스트를 빼먹으면 나중에 중대한 오류로 커질 수 있다. 그렇기에 자주 테스트를 할 수록 좋다.
그래서 등장한 것이 바로 TDD! TDD를 사용하면 실패하는 테스트 케이스들까지 빼먹지 않고 개발이 가능하다.
테스트를 여러번 진행하다 보면 코드가 겹칠 수 있고 이것은 객체 지향에 있어서 최악의 코드라고 볼 수 있다. 이를 위해서 어노테이션을 이용한다.
@Before
: @Test가 실행되기 전에 실행된다.
@After
: @Test가 실행된 후에 실행된다.
또한 필요한 오브젝트는 DI를 받기도 한다. 이 때도 어노테이션을 이용한다.
@Autowired
: 해당 변수에 할당 가능한 타입을 가진 빈을 자동으로 찾는다. 같은 타입이 여러개인 경우에는 이름이 일치하는 빈을 주입하며 이 경우에도 같은 이름이 여러개일 경우에는 예외를 던진다.우리가 새로운 API나 프레임워크를 사용하려면 해당 기능을 어떻게 작성하는지 알아야 한다. 여기서 우리는 학습을 위해서 테스트를 이용하기도 한다.