본문 바로가기
테스트

테스트코드 작성시 유념사항

by 순원이 2024. 4. 7.
    • Repoistory -> Service -> Controller 순으로 개발한다.
      • 다른 계층에 대한 의존성이 거의 없기 때문에
    • 접근 방법
      • 가짜로 구현하기: 최대한 빨리 테스트를 통과하기 위해 정답이 아닌 가짜 정답을 구현하는 방법
      • 삼각측량법: 값이 다른 여러 테스트를 작성하고, 이를 일반화하여 정답을 구현하는 방법
      • 명백하게 구현하기: 정답을 바로 구현하는 방법
    •  테스트를 위해 구현 설계가 변경될 수 있다.
    • 테스트 코드는 구현의 보조 수단이 절대 아니다.
    • 항상 같은 결과가 반환되는 함(순수함수) 가 테스트하기 좋은 코드

 

나쁜 테스트 코드       

 

제어할 수 없는 값에 의존하는 경우, 

  • Random(), new Date() (LocalDate.now()) 와 같이 실행할때마다 결과가 다른 함수에 의존하는 경우

외부에 영향을 주는 코드

  • 데이터베이스가 필요
    • 데이터베이스를 사용하는 테스트들은 느린 테스트의 주범
  • Asyc함수

 

해결법    

  • 테스트하기 어려운 코드와 테스트하기 쉬운 코드를 분리
  • 제어할 수 없는 값을 외부에서 주입받도록 한다.

 

 

단위테스트 코드를 짜는 이유     

테스트가 가능한 코드를 만든다는 것은 결국, 테스트하기 쉽게 만들어진 코드를 만드려고 노력한다는 것이라고 할 수 있다. 이렇게 개발하다보면, 각 모듈의 역할이 단순해지고 명확해진다. 즉 모듈의 크기를 줄일 수 있게 되고 모듈과 계층 간의 커플링을 적게 만들어 결국 프로젝트의 유지보수와 확장을 더 쉽게 한다. 그렇기 때문에, 아래와 같은 장점이 있다.