본문 바로가기

분류 전체보기178

[Xcode/Swift] Multiple Target 1. duplicate Target 혹은 하단에 있는 + 버튼을 눌러서 추가해 줘도 됨. 사용자 정의 property list가 담긴 info.plist 파일도 함께 복사됨 2. 더블 클릭하여 Target 이름 변경, 스킴 이름 변경하기 위해 상단 빌드 상태바에서 Manage Schemes 선택 3. 스킴 선택 후 탭 누르면 이름 변경 가능 4. 각 Configuration에서 사용할 Custom Flag설정 가능 Swift Compiler에서 Custom Flags 설정 가능함 2023. 4. 26.
[Xcode/Swift] User-Defined Build Settings Build Settings에서 Configuration 별로 값을 지정하여 사용할 수 있음 Configuration이 각각 다른 값을 가지는 경우 사용할 수 있음 ex) host url 1. Build Settings 에서 Add User-Defined Setting 을 눌러 사용자 정의 세팅을 추가 2. 사용할 타이틀을 입력해 주면 Configuration 별로 값을 지정할 수 있음 3. Info.plist에서 BASE_URL로 접근시 Build settings 에서 정의해 준 BASE_URL 값을 쓸 수 있도록 $(BASE_URL) 로 설정 해 줌 Info.plist란 key/value 쌍으로 빌드 타임 동안 업데이트 되는 값. xCode는 빌드 되는 동안 Build setting을 살펴보게 되는데 .. 2023. 4. 26.
[Xcode/Swift] Configuration 관리하기 Intro Dev -> QA -> Release의 과정을 거치며 각 단계에서 요구하는 빌드 세팅이나 상수의 정의가 다를 수 있음 ex) URL host for Networking, Firebase info.plist etc.. Configuration을 사용하면 각 Configuration에 필요한 빌드 세팅을 지정해 줄 수 있음 Multiple targets을 통해서도 프로젝트에 사용하는 값을 분기 할 수 있지만 Target은 MacOS, iOS 등의 기긱 타겟, 같은 코드를 공유하면서 일부 로직이 달라 다른 앱으로 배포되는 앱 등에서 사용 Configuation을 변경하는 것은 일종의 작업 환경을 변경해 주는 것 하나의 앱에서 다른 환경으로 테스트 하거나 실행해야 할 때 유용 배포시에도 Configu.. 2023. 4. 26.
[iOS/Swift] 앱 뱃지 갯수 변경 UIApplication.shared.applicationIconBadgeNumber = 90 시뮬레이터에서는 표시 되지 않음 특정 동작시 뱃지의 갯수를 변경하고자 한다면 위 코드를 사용해서 직접 변경해 줘야 함 뱃지를 제거 하고 싶은 경우 0을 입력하면 뱃지가 노출되지 않음 2023. 4. 26.
[iOS/Swift] Alamofire 프로젝트를 위한 UnitTest URLSession의 dataTask를 프로토콜로 만든 URLSessionProtocol을 URLSession과 NetworkManager의 session의 타입으로 지정해서, 실 사용 앱에서는 기본 URLSession 동작을 그대로 유지하고 테스트 시에는 Mock URLSession을 사용하여 테스트 하는 것이 예시로 많이 나왔다. 만약 이미 Alamofire을 사용하는 경우 이를 한 번 더 추상화 한 Moya를 사용하는 방법도 있겠지만 우선은 기존 프로젝트의 수정이 최대한 적은 쪽으로 Alamofire로 Unit Test를 시도해 보자! Session 기존에 사용한 NetworkManager는 Singleton 패턴으로 되어 있다. 외부에서 직접 Session을 주입해주는 것이 아니라 내부에서 req.. 2023. 4. 21.
[Unit Test] Test Double Unit Test를 진행하는 동안 request가 발생하면 데이터베이스의 영향을 받게 됨. 수행해야 하는 기능을 가진 로직을 작성했다 하더라도 데이터 베이스의 상태에 따라 테스트 결과가 다르게 나올 가능성이 있음 Unit Test는 빠르고 안정적으로 진행되어야 함 안정성 외에도 실제 서버와 통신하게 되면 단위 테스트 속도가 느려짐 테스트하려는 객체가 직접적으로 네트워킹 하지 않고 테스트 할 때 대신 사용할 수 있는 객체를 테스트 더블이라고 함 Dummy 인스턴스 객체가 필요하지만 기능은 필요로 하지 않는 객체 => 전달은 되지만 사용되지 않음 아무런 동작을 하지 않아도 테스트에 영향을 미치지 않는 객체 Fake 객체 내부에서 필요로 하는 다른 외부 객체의 동작을 단순화 해서 구현한 객체이지만 실제 프로덕.. 2023. 4. 14.
[iOS/Swift] 비동기(async) 테스트 참고 사이트 및 출처 원문 Kodeco의 iOS Unit Testing and UI Testing Tutorial을 번역한 yoonbumatae의 글을 정리한 포스팅입니다. 더 자세한 내용을 참고하시려면 아래 두 링크를 참고하세요! https://www.kodeco.com/21020457-ios-unit-testing-and-ui-testing-tutorial iOS Unit Testing and UI Testing Tutorial Learn how to add unit tests and UI tests to your iOS apps, and how you can check on your code coverage. www.kodeco.com http://yoonbumtae.com/?p=4020 Swift.. 2023. 4. 14.
[iOS/Swift] 동기(sync) 테스트 참고 사이트 및 출처 원문 Kodeco의 iOS Unit Testing and UI Testing Tutorial을 번역한 yoonbumatae의 글을 정리한 포스팅입니다. 더 자세한 내용을 참고하시려면 아래 두 링크를 참고하세요! https://www.kodeco.com/21020457-ios-unit-testing-and-ui-testing-tutorial iOS Unit Testing and UI Testing Tutorial Learn how to add unit tests and UI tests to your iOS apps, and how you can check on your code coverage. www.kodeco.com http://yoonbumtae.com/?p=4020 Swift.. 2023. 4. 13.
[iOS/Swift] @testable Swift의 기본 Access-Level은 internal internal은 외부에서 접근 불가 테스트 케이스를 작성하는 동안에는 테스트 케이스에서 해당 클래스와 메서드에 대해 엑세스 해주어야 함 -> Target에서 internal로 정의 된 레벨 접근 불가능하게 됨 대부분 개발 시 따로 Access Level을 정의해 주지 않음 만약 testabl로 정의하지 않으면 모든 단위에서 public으로 선언해 주어야 접근 가능 Solution 1. Enable Testability build setting을 Yes로 설정. Xcode 는 컴파일 중에 -enable-testing 플래그를 포함 complied 모듈에서 선언된 swift entities가 높은 레벨의 access 수준으로 설정됨 2. @test.. 2023. 4. 13.
[iOS/Swift] XCTestCase 생성하기 참고 사이트 및 출처 원문 Kodeco의 iOS Unit Testing and UI Testing Tutorial을 번역한 yoonbumatae의 글을 정리한 포스팅입니다. 더 자세한 내용을 참고하시려면 아래 두 링크를 참고하세요! https://www.kodeco.com/21020457-ios-unit-testing-and-ui-testing-tutorial iOS Unit Testing and UI Testing Tutorial Learn how to add unit tests and UI tests to your iOS apps, and how you can check on your code coverage. www.kodeco.com http://yoonbumtae.com/?p=4020 Swift.. 2023. 4. 13.
[iOS/Swift] Unit Test 란? 단위 테스트라고 하며 프로그램의 기본 단위인 모듈을 테스트 함 모듈이 정해진 기능을 수행하는지 테스트 함(모듈 단위로 코드가 작성되어야 함) FIRST 기준 Fast(빠름) 테스트는 빠르게 실행되어야 함 Independent/Isolated(고립됨) 테스트는 서로 상태를 공유해서는 안됨 Repeatable(반복적) 테스트를 실행할 때마다 동일한 결과를 얻어야 함. 외부 데이터를 공급자(external data Provider 네트워크 서비스 로직 같은 것), 동시성(concurrency) 문제로 인해 간헐적 오류 발생 할 수 있음 Self-validating(자가 검증) 테스트는 완전히 자동화되어야 함. 로그파일로 프로그래머가 해석하는 것이 아닌 테스트 케이스에 대해 “통과” 또는 “실패”여야함 Time.. 2023. 4. 10.
[RxSwift] passing viewmodel data to viewController ViewModel var currentSelectedCategoryIdx = PublishSubject() 초기값이 필요없는 경우 PublishSubject로 ViewModel에 property 정의 struct Input { // 생략 } struct Output { let changedCategoryIdx: Observable } viewController에서 값을 받아 사용해야 하므로 Output에 반환할 Observable 타입을 정의해줌 func transform(input: Input) -> Output { let changedCategoryIdx = currentSelectedCategoryIdx.asObserver() return Output(changedCategoryIdx: change.. 2023. 3. 25.