답변:
기본 대상에서 Enable Testability
빌드 옵션을 예로 설정해야합니다 .
아래 @earnshavian의 의견에 따르면, 이것은 애플 릴리스 노트에 따라 디버그 빌드에서만 사용해야합니다. "테스트 가능 빌드 빌드 설정은 내부 심볼 내보내기에 의존하지 않는 최적화를 금지하므로 디버그 구성에서만 사용해야합니다. 응용 프로그램 또는 프레임 워크 " https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
@testable
되지만 (필요한 ) App Store에 제출해야하는 릴리스 빌드에서 정확히 어떻게 작동 합니까? 경우는 Enable Testability
단지 디버그 빌드에 대해,이 주변의 방법은 무엇입니까? 테스트 코드를 풀어야합니까?
필자의 경우 테스트를 위해 사용자 정의 빌드 구성 (이라고도 함 Test
)과 cocoapods
종속성 관리자를 사용했습니다.
Podfile
테스트 가능성을 활성화 하기 위해 끝에 다음 줄을 추가해야했습니다.
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.name == 'Test'
config.build_settings['ENABLE_TESTABILITY'] = 'YES'
end
end
end
end
기본으로 cocoapods
세트 ENABLE_TESTABILITY
에 YES
대해서만은 Debug
빌드
기본 목표가 Enable Testability
로 설정되어 있기 때문일 수 있습니다 NO
. YES
테스트를 실행하는 데 사용되는 디버그 구성표로 설정해야합니다 .
Carthage를 사용 @testable
하는 경우 릴리스 스키마를 사용하여 빌드 된 프레임 워크를 가져 와서이 문제가 발생할 수 있습니다 .
대부분의 경우 접두사가있는 프레임 워크를 가져 오는 것은 좋지 않으므로 피할 수 있습니다. 당신이 할 수 없다면, 당신은 Enable Testability
프레임 워크의 릴리스 계획에 있어야합니다 . https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
프레임 워크를 테스트하려는 경우 :
테스트 대상으로 이동-> 빌드 단계-> 새 사본 파일 작성 단계-> 프레임 워크 선택-> 재귀 적으로 사용되는 모든 프레임 워크 추가
만일 당신이 우연히
install! 'cocoapods',
generate_multiple_pod_projects: true,
incremental_installation: true
그런 다음이 방법입니다.
# generated_projects only returns results if the we run "pod install --clean-install"
# or install a pod for the first time
installer.generated_projects.each do |project|
project.build_configurations.each do |configuration|
configuration.build_settings["ENABLE_TESTABILITY"] = "YES"
end
end
이것은 Xcode 8 이전의 프로젝트에서 발생하지 않았지만 Xcode 8로 업그레이드 한 후에 당황했습니다.
여기에 게시 된 답변으로 문제가 해결되지 않았습니다. 나를 위해, 나는이 테스트가 필요하지 않기 때문에 방금 버렸습니다. 테스트 버튼을 체크 해제하십시오 :