Cocoapod를 사용한 Xcode 장치 테스트
저는 지난 며칠 동안 이것으로 벽에 머리를 부딪혔지만 여러 번의 Google/SO/Github 검색에도 불구하고 제가 겪고 있는 문제에 대한 해결책을 찾을 수 없습니다!
제가 하려는 것은 파이어베이스 포드를 사용하는 앱에 대한 몇 가지 유닛 테스트를 만드는 것입니다.
저는 Xcode 7.3.1과 Cocoapods 1.0.1을 사용하고 있습니다.업데이트:Xcode 8.0과 관련된 문제가 남아 있습니다.
이 포드 파일을 사용하는 경우:
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
target 'MyApp' do
pod 'Firebase'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
target 'MyAppTests' do
inherit! :search_paths
end
end
나의 XCT 시험 수업에서 나는 받습니다.
필요한 모듈 'Firebase' 누락
에 있어서의 실수.@testable import MyApp
또는 다음 포드 파일을 사용합니다.
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
def common_pods
pod 'SwiftyTimer'
pod 'Firebase'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
end
target 'MyApp' do
common_pods
end
target 'MyAppTests' do
common_pods
end
테스트는 빌드되지만 콘솔에 다음과 같은 경고가 표시됩니다.
클래스 <-FirebaseClassName->은(는) 모두에서 구현됩니다.내 앱...그리고...내 앱 테스트...둘 중 하나가 사용됩니다.정의되지 않은 것은 무엇입니까?
저도 같은 문제가 있었습니다.나는 그것을 움직여서 해결했습니다.pod 'Firebase'
내 시험 목표에 도달했습니다.Pod 파일을 다음으로 변경합니다.
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
target 'MyApp' do
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
target 'MyAppTests' do
inherit! :search_paths
pod 'Firebase'
end
end
을 상을다음변보십경시오해로로 .:complete
다음과 같이:
target 'MyAppTests' do
inherit! :complete
end
중요한 것은 다른 사람이 당신의 레포를 체크아웃할 수 있도록 허용한다는 것입니다.pod update
할 .xcconfig
파일이나 다른 해커들은 단지 구축하기 위한 것입니다.
- Unit Test Target 설정을 선택합니다.
- 빌드 설정으로 이동합니다.
- 머리글 검색 경로를 찾습니다.
- 값을 합니다.
$(SRCROOT)/Pods
재귀적인 경우 Xcode가 경로를 해결합니다.
예는 다음과 같습니다.
문제는 코코아 포드가 설정 값을 자체적으로 생성한 후에 Firebase가 헤더 검색 경로를 사용하여 특별한 작업을 수행하므로 코코아 포드는 이 변경 사항을 테스트 대상으로 전달하기 위해 이 변경 사항을 인식하지 못합니다.두 가지 방법 중 하나로 해결할 수 있습니다.
찾기
MyAppTests.<configuration>.xcconfig
합니다.HEADER_SEARCH_PATHS
:${PODS_ROOT}/Firebase/Analytics/Sources
[*]빌드 설정에서 헤더 검색 경로에 대한 설정을 찾고 옵션 1과 동일한 값을 목록에 추가합니다.재귀적으로 설정할 필요는 없습니다.
AKM의 코멘트에 따르면, 이것은 다음과 같이 변경되었습니다.${PODS_ROOT}/Firebase/Core/Sources
3 버전 3.14.0 버전
추가하기${SRCROOT}/Pods/Firebase/CoreOnly/Sources
장치 테스트 대상의 "헤더 검색 경로"로 문제를 해결했습니다. 예:
- 장치 테스트 대상을 선택합니다.
- 빌드 설정으로 이동
- 헤더 검색 경로 검색
- ${SRCROOT}/Pod/Firebase/코어 전용/소스 추가
이 후 테스트를 실행할 수 있으며 오류가 사라집니다.
이 작업을 수행하기 전의 세 단계:
코코아 포드: 1.5.0 스위프트 4 파이어베이스: 4.13.0
1단계: 다음 대상 블록을 포드 파일에 추가해야 합니다.
# Uncomment the next line to define a global platform for your project
platform :ios, '11.3'
target 'TIMII' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for TIMII
pod 'Firebase/Core'
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Storage'
target 'TIMIITests' do
inherit! :search_paths
pod 'Firebase/Core'
end
end
2단계: 앱 내에서프로젝트 탐색기 빌드 설정 탭을 테스트합니다.머리글 검색 경로 행을 찾아 다음 행 디버그에 추가합니다.
$( 상속됨) ${PODS_ROOT}/Firebase/Core/S
3단계: 터미널 실행 시:
포드 업데이트
다음과 같은 간단한 방법도 사용할 수 있습니다.
target 'MyApp' do
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
target :MyAppTests
end
이 문제는 다음 소방 기지 프로젝트에 기록됩니다.
https://github.com/firebase/firebase-ios-sdk/issues/58
해결 방법은 다음과 같습니다.
빌드 설정 -> 헤더 검색 경로에서만 테스트 대상에 "${PODS_ROOT}/Firebase/Core/Sources" 추가
그러나 이 문제는 더 나은 솔루션인 코코아 포드 1.4.0 이상으로 업그레이드하여 해결할 수도 있습니다.
제가 이 글을 쓰고 있는 시점(2017년 11월)에 코코팟 1.4.0은 아직 베타 버전이므로 설치하려면 베타 버전을 명시적으로 요청해야 합니다.
gem install cocoapods --pre
이것과 그 다음에 하는 것.pod install
테스트를 실행하는 문제를 해결했습니다.
나는 위의 모든 것을 시도했고 원래 시작했던 다양한 다른 오류들과 마주쳤습니다.Missing required module 'Firebase'
나서 그다에음을 받는 것."Class ... is implemented in both ... "
테스트 대상에 Firebase Pod를 추가하려고 하면 링커 문제가 발생합니다.
저에게 효과적인 솔루션은 다음과 같습니다.
- 테스트 대상을 포드 파일에서 완전히 제거하고 '포드 업데이트'를 실행하여 XCode 프로젝트가 동기화되었는지 확인합니다.
- 테스트 대상의 빌드 설정을 열고 헤더 검색 경로를 다음 3개 항목만 포함하도록 업데이트합니다.
$(inherited) non-recursive
$(SRCROOT)/Pods/Headers/Public recursive
$(SRCROOT)/Pods/Firebase recursive
이 시점에서 빌드 폴더를 정리하고, 다시 빌드한 다음 테스트를 다시 실행하는 것이 효과적이었습니다.이것이 누군가에게 도움이 되기를 바랍니다!
저를 위한 해결책은 코코팟을 버전 1.1.0.rc.2로 업데이트하는 것이었습니다.
sudo gem install cocoapods --pre
저도 비슷한 문제가 있었습니다..MyApp.<configuration>.xcconfig
의 파로에 .MyAppTests.<configuration>.xcconfig
파일입니다. 제가 청소하고 테스트를 만들었고, 효과가 있었습니다.
빌드 설정 -> 헤더 검색 경로에서만 테스트 대상에 "${PODS_ROOT}/Firebase/Core/Sources" 추가
@Will이 언급했듯이 코코아 포드 설치 후 헤더 검색 경로와 관련된 문제입니다.
프로젝트에서 'Firebase.MyProject-Shared
'는 ' 됩니다.Podfile'의 Firebase 포드는 'MyProject-Shared' 대상에만 설치됩니다.모듈은 수 : 'MyProject-Shared'.
'필요한 모듈 "Firebase" 누락'
제 경우 비결은 Analytics-Framework를 참조하여 각 대상의 Build Settings에서 누락된 헤더 검색 경로를 추가하는 것이었습니다.
"${PODS_ROOT}/Firebase/CoreOnly/Sources"
아래 그림을 참조하십시오.
시간을 절약할 수 있기를 바랍니다.
Missing required module Firebase
코코아 포드 솔루션 없음
동일한 문제가 발생하지만 코코아 포드를 사용하지 않는 사용자:
Firebase를 사용하는 경우 다음을 포함하는 폴더가 있습니다.Firebase.h
그리고.module.modulemap
파일. 예를 들어 -YOUR_PROJECT_DIR/Linking
기본 프로젝트 대상이 올바르게 작동하는 경우 프로젝트 설정 -> 대상으로 이동해야 합니다.테스트 대상을 선택합니다.검색:User headers
경로 추가YOUR_PROJECT_DIR/Linking
.선택한다.recursive
선택권이 있으면 당신은 가도 좋습니다.
자세한 내용은 스크린샷을 참조하십시오.
언급URL : https://stackoverflow.com/questions/38216090/xcode-unit-testing-with-cocoapods
'programing' 카테고리의 다른 글
Excel의 VBA 기능이 범위를 반환할 수 있습니까? (0) | 2023.05.21 |
---|---|
일별 그룹 내 MongoDB 집계 (0) | 2023.05.21 |
VB - C# 함수 (0) | 2023.05.21 |
Angular 2에서 EventEmitter.next()와 EventEmitter.emit()의 차이 (0) | 2023.05.21 |
새 GUI를 만들 때 WPF가 Windows Forms보다 선호됩니까? (0) | 2023.05.21 |