THIS IS ELLIE

유닛 테스트 Dependency Injection 본문

공부/Unit Testing

유닛 테스트 Dependency Injection

Ellie Kim 2023. 5. 6. 18:22

안녕하세요
오랜만이에요 :)

 

(아무도 안 물어봤지만)
요즘 나의 관심사 == 유닛 테스트
오늘은 DI가 유닛 테스트에 왜 필요한지에 대해서 작성해보려 해요


Class A와 Class B가 있다고 생각해 봅시다

우리는 클래스 A의 a 함수가 잘 동작하는지
그리고 예상한 결과가 잘 반환되는지 확인해 본다고 할게요

클래스 A의 a 함수가 다른 코드에 독립적이다면?
a가 성공 실패 여부에 따라서 우리는 판단할 수 있겠죠
테스트에 성공했다면 a 함수가 잘 동작하고 있구나 또는
테스트에 실패했다면 a 함수에 어느 부분이 문제가 있구나 아... 수정해야겠다 이렇게요!

 

하지만 프로젝트가 커질수록 모든 함수가
다른 코드에 독립적이기는 쉽지 않죠?
다른 객체를 생성하고 어떤 작업을 하도록 호출하는 경우가 많을 겁니다

위 이미지와 같이
클래스 A의 a 함수에서 클래스 B를 생성하고 b 함수를 호출하는 식으로요
어쩌면 더 더 복잡해질 수도 ㅇㅇ

 

하지만
여기서 발생하는 잠재적? 문제가 있습니다

클래스 B의 b 함수에서 우리가 예상한 결과와
다른 값이 반환되거나 예상과 다르게 실행된다면?
즉 b 함수에서 테스트 fail이 났다면?

이는 클래스 A의 a 함수의 유닛테스트도 실패로 이어질 겁니다
그런데!!!!!!!
우리는 클래스 A의 a 함수가 잘못된 동작을 할 수 있다고 착각할 수도 있죠
내가 테스트 돌린 것은 클래스 A의 a 함수다!!!!
사실상 B클래스의 b함수가 잘못된 동작을 하고 있는데도요

 

이런 현상을 방지하기 위해서
우리는 우리가 테스트할 코드를 독립시킬 필요가 있습니다.

 

어떻게 독립시키냐고요?
바로 Dependency Injection으로요!
다음 포스트는 Dependecny Injection에 대해서 포스팅하겠습니다

반응형