일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- string
- leetcode
- ios
- stanford SwiftUI
- 스위프트UI
- 딥러닝
- 독서
- ARC
- iOS SwiftUI
- Algorithm
- 책 추천
- Animation
- 머신러닝
- 알고리즘
- 애니메이션
- 문자열
- ReactiveX
- swiftUI
- SWIFT
- Deep learning
- objc
- 스위프트
- rxswift
- RX
- 책
- wwdc
- Xcode
- swift5
- 책 후기
- objective-c
- Today
- Total
THIS IS ELLIE
유닛 테스트 Dependency Injection 본문
안녕하세요
오랜만이에요 :)
(아무도 안 물어봤지만)
요즘 나의 관심사 == 유닛 테스트
오늘은 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에 대해서 포스팅하겠습니다
'공부 > Unit Testing' 카테고리의 다른 글
XCTest를 사용해서 메모리 누수 감지하기 (0) | 2023.10.30 |
---|---|
의존성 주입 Dependency Injection (0) | 2023.05.08 |
프로젝트에 유닛 테스트 번들 추가하기 Xcode (0) | 2023.03.05 |
iOS 유닛 테스트 시작하기 / 단위 테스트 (0) | 2023.03.04 |