앺플로이드 팀에서 만들어보기로 한 미니 프로젝트는 기왕 하는 김에 해보고 싶었던 걸 좀 때려박아 보기로 했다.
결과 = MVVM+RxSwift+Test Case
View는 재빠르고 간단하게 다 그려두고, 이제 모델을 생성할 단계가 되어 테스트 케이스 작성하는 법도 서치 해보면서 적용을 시도해봤는데,,,
구글이 이르되 프로젝트를 생성하면서 Include Unit Tests를 해주면 문제가 없어야 하는 걸로 보이건만 시작부터 순탄하지가 않다.
물론 이 모든 것은 프로젝트 구조 깡그리 무시한 무지한 자가 초래한 무식한 결과였음을....
우선 @testable로 모델 파일 추가한 부분.... 애초에 internal로 선언된 놈인데 바깥에서 부른다..?(이하생략)
https://zeddios.tistory.com/1078
하지만 위 링크를 보다보면,
1. Build Setting의 Enable Testability를 Yes로 하면 Xcode는 컴파일 할 때 enable-testing flag를 넣는다고 해요. 이게 Swift의 엔티티들이 더 높은 level의 acess 권한을 가질 수 있게 됩니다.
2. 이제 저 "Enable Testability"를 활성화 해놓은 상태에서 import문에 @testable을 추가하면, 비로소 해당 범위에서 해당 모듈에 대한 높은 접근 권한이 활성화되게 됩니다. internal / public으로 표시된 클래스 및 클래스 멤버들은 마치 open인 것 마냥 표시됩니다.
...?
해결방법은 아래에서 찾았다
https://baked-corn.tistory.com/135
마지막으로 테스트의 대상이 되는 프로젝트의 파일들에서 테스트 타겟을 타겟 맴버쉽으로 포함시켜야 합니다. 그래야 테스트 타겟에서 테스트의 대상이 되는 모듈에 접근이 가능하기 때문입니다.
File inspector에서 Target Membership에 ~Tests도 체크해주면 import 없이도 제대로 모델 불러올 수 있었다!
+) 근데 첫 번째 링크에서도 이거에 대한 언급을 하면서 추천하지 않는다고 적어뒀던데, UI Test에 대한 얘기여서 그런건지.... 하지만 그렇다고만 하기엔 테스트 필요한 모든 파일에 타겟을 추가해주는 것 자체를 비추한다는 내용인 것 같은데.. 내용만 보면 Unit Test는 타겟 추가 없이도 그냥 동작해야 하나 본데.......
좀더 하면서 서치가 필요할 것으로 보임.
@testable 뒤에 class를 기재하는 게 아니라 project를 기재하는 거라는 걸 알고 나서 정작 그렇게 build 해보질 않았었다.
file마다 target membershipn 체크해줄 필요 없이, @testable import ~ 해주면 내부 모듈들 사용할 수 있음!
'개발노트 > iOS' 카테고리의 다른 글
SwiftUI로 Video Player 만들기 - UIViewRepresentable (1) | 2024.10.25 |
---|---|
SwiftUI와 MVI (2) (0) | 2024.10.20 |
SwiftUI와 MVI (1) (3) | 2024.10.15 |
UINavigationBar left title & right bar buttons (0) | 2022.12.21 |
Dynamic link: app install 이후 제대로 동작 안 함 (0) | 2022.08.06 |