junit

    [토비 스프링] CH2-2. 스프링과 JUnit

    [토비 스프링] CH2-2. 스프링과 JUnit

    현재 문제점 테스트 코드가 어느 정도 깔끔해지긴 했지만 어플리케이션 컨텍스트의 생성 방식에 문제가 있다. @Before 메소드가 테스트 메소드 개수만큼 반복되기 때문에 컨텍스트도 여러 번 생성된다. 빈이 많아지고 복잡해지면 애플리케이션 컨텍스트 생성에 적지 않은 시간이 걸린다. 또 한 초기화 될 때 어떤 빈은 독자적으로 많은 리소스를 할당하거나 독립적인 스레드를 띄우기 때문에 테스트를 마칠 때마다 애플리케이션 컨텍스트 내의 빈이 할당한 리소스 등을 정리해주지 않으면 다음 컨텍스트를 만들 때 문제가 생길 수 있다. 애플리케이션 컨텍스트의 경우 초기화되고 나면 내부의 상태가 바뀌지 않기 때문에 한 번만 만들고 여러 테스트가 공유해서 사용하도록 하는 것이 좋다. 이를 위해 스프링이 직접 제공하는 애플리케이션 ..

    [토비 스프링] CH2-1. 테스트

    테스트의 필요성 테스트란 결국 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지를 확인해서, 만든 코드를 확신할 수 있게 해주는 작업이다. 보통 웹 프로그램에는 웹 화면을 통해 값을 입력하고 기능을 수행하고, 결과를 확인하는 식으로 테스트한다. 하지만 이는 DAO에 대한 테스트로서는 단점이 너무 많다. 테스트하고 싶었던 건 UserDao였는데 다른 계층의 코드와 컴포넌트, 서버 설정 상태까지 모두 테스트에 영향을 미치기 때문에 이런 방식으로 테스트를 하게 되면, 정확한 오류 지점을 파악하기 힘들다. 따라서 테스트하고자 하는 대상이 명확하다면 그 대상에만 집중해서 테스트하는 것이 바람직하다. 테스트를 할 때도 관심사의 분리 원리가 적용된다. 작은 단위의 코드에 대해 테스트를 수행하는 것을 단위 테스트라..