뱅크샐러드, RxTestCase와 BaseTestCase로 iOS 단위 테스트 보일러플레이트 제거
핵심 내용
뱅크샐러드 iOS팀이 TestUtility 모듈을 통해 RxSwift 기반 단위 테스트의 보일러플레이트를 줄이고 TDD 적용 범위를 확장하는 전략을 공개했다.
자세히 보기
뱅크샐러드 iOS 개발팀은 TestUtility 모듈을 활용해 단위 테스트의 단순성과 일관성을 확보하는 방식을 공개했다. 핵심 도구인 BaseTestCase는 given, when, then 구조를 제공하며, RxTestCase는 이를 상속받아 RxSwift 기반 비동기 로직 테스트를 위한 TestScheduler, DisposeBag, resultObserver를 내부적으로 관리한다.
RxTestCase는 eventsToObserve 속성 설정 시 관련 객체들을 자동 초기화 및 바인딩하고, when 메소드에서 입력 이벤트 실행 후 executeEvents를 호출해 결과를 누적한다. 이를 통해 TestScheduler 관련 보일러플레이트 코드를 대폭 줄여 테스트 코드를 3줄 내외로 작성할 수 있게 되었다.
로깅 스펙 검증을 위해 EventLoggingTestCase를 별도로 구현했다. EventLogger의 eventObserver 속성을 PublishSubject로 초기화하여 이벤트 기록 여부를 테스트 코드에서 관측 가능하게 하며, 육안 확인이 어려운 로깅 로직의 신뢰성을 높였다. 또한 화면 전환 로직 테스트를 위해 PresentationTestCase와 PushableLogicTestCase를 활용하여, Form 인풋과 화면 전환 아웃풋을 연결하는 통합 테스트를 수행한다.
뱅크샐러드는 enum으로 관리되는 화면 출력값의 비교를 위해 debugDescription을 선언하여 Equatable 문제를 해결했다. TDD 적용 시 체력 소진을 방지하기 위해 EventLogging이나 Navigation 로직 등 상대적으로 쉬운 영역부터 시작해 점차 범위를 확장하는 전략을 제시하며, 자동화 테스트를 살아 숨 쉬는 스펙 문서로 활용하고 있다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.