토비의 스프링 TEST 활용

두별·2022년 5월 15일
0

Spring Framework

목록 보기
18/18
post-thumbnail

1. 테스트란?

  • 개발자가 예상하고 의도했던 대로 코드가 정확히 동작하는지를 확인해서, 코드에 확신을 가질 수 있게 해주는 작업이다.
  • 테스트의 결과가 원하는 대로 나오지 않는 경우에는 코드나 설계에 결함이 있음을 알 수 있다.
  • 테스트를 통해 디버깅을 거치게 되고, 최종적으로 테스트가 성공하면 모든 결함이 제거됐다는 확신을 얻을 수 있다.

2. 테스트 코드는 왜 만들어야 할까?

기존 테스트 방법의 문제점

웹 화면을 통해 값을 입력하고, 기능을 수행하고, 결과를 확인하는 방법은 가장 흔히 쓰이는 방법이지만 단점이 너무 많다.

  • DAO 뿐만 아니라 서비스 클래스, 컨트롤러, 뷰 등 모든 레이어의 기능을 다 만들고 나서야 테스트가 가능하다는 문제점
  • 테스트를 하는 중에 에러가 나거나 테스트가 실패했다면 어디에서 문제가 발생했는지를 찾아내야 하는 수고가 필요하다.
  • 테스트하고 싶었던 건 UserDao였는데 다른 계층의 컴포넌트, 심지어 서버의 설정 상태까지 모두 테스트에 영향을 줄 수 있기 때문에 이런 방식으로 테스트 하는 것은 번거롭고, 오류가 있을 때 빠르고 정확한 대응이 힘들다.

3. 효율적인 테스트 코드란?

단위 테스트

한꺼번에 너무 많은 것을 몰아서 테스트 하면 테스트 수행 과정도 복잡해지고, 오류가 발생했을 때 정확한 원인을 찾기가 힘들어진다.

테스트 하고자 하는 대상이 명확하다면, 그 대상에만 집중해서 테스트하는 것이 바람직하다.

이러한 작은 단위의 코드에 대해 테스트를 수행한 것을 단위 테스트라고 한다.

  • 일반적으로 단위는 작을수록 좋다. 단위를 넘어서는 다른 코드들은 신경 쓰지 않고, 참여하지도 않고 테스트가 동작할 수 있으면 좋다.
  • 단위 테스트가 필요한 이유는 개발자가 설계하고 만든 코드가 원래 의도한 대로 동작하는지를 개발자 스스로 빨리 확인받기 위해서이다.

자동수행 테스트 코드

테스트는 자동으로 수행되도록 코드로 만들어지는 것이 중요하다.

웹 화면을 띄우고. 개발자가 직접 입력하고 버튼을 누르고 .. 이러한 과정은 테스트에서 생략되어야 한다. 이러한 테스트 과정에서 에러가 발생하기라도 한다면, 개발자는 매번 다시 데이터를 입력해야하는 번거로움을 반복해야하기 때문이다.

자동으로 수행되는 테스트의 장점은 자주 반복할 수 있다는 점이다. 번거로운 작업이 없고 테스트를 빠르게 실행할 수 있기 때문에 언제든 코드를 수정하고 나서 테스트를 해볼 수 있다.

애플리케이션을 구성하는 클래스 안에 (예를 들어 main 메소드) 코드를 포함시키는 것보다는 별도의 테스트용 클래스를 만들어서 테스트 코드를 만드는 것이 낫다.

만약 모든 클래스마다 main 메소드에 테스트 코드를 만든다고 치면, 해당 클래스가 분리 되거나 유연한 설계구조로 변경되는 과정에서 이 테스트 코드는 어디로 가야할지 애매해지기 때문에 애플리케이션을 구성하는 클래스와 테스트를 구현하는 클래스의 구조는 별개로 분리하는 것이 바람직하다.

테스트의 결과를 확인하는 것(검증) 또한 자동화가 되어야 한다.

UserDaoTest는 테스트를 수행하는 동안 입력 데이터의 준비를 모두 자동으로 셋팅하도록 만들어졌다. 하지만 여전히 사람의 눈으로 확인하는 과정이 필요하다. user 정보를 DB에 등록하고, 이를 다시 조회했을 때 처음 입력한 값과 가져온 값이 일치하는지를 테스트 코드는 확인해주지 않는다.

테스트 수행은 코드에 의해 자동으로 진행되긴 하지만 테스트의 결과를 확인하는 일은 개발자의 책임이므로 완전히 자동으로 테스트되는 방법이라고 말할 수 없다.

3. 이제 만들어보자

  1. JUnit 추가하기
    - src 하위 디렉토리에 test 폴더 생성

    - 프로젝트 우클릭 > Open Module Settings
  • Test Source Folders로 지정하기 위해 test 폴더를 선택한 뒤 Mark as에서 T
    ests를 선택
  1. 테스트 코드 작성
    - 테스트 코드를 생성할 클래스의 클래스명 우클릭 > Go To > Test

0개의 댓글