Swift 2의 새로운 @testable
선언을 사용하여 클래스를 테스트 대상에 노출하려고합니다. 그러나이 컴파일러 오류가 발생합니다.
Intervals
노출하려고하는 클래스가 포함 된 모듈입니다. 이 오류를 어떻게 제거합니까?
답변
기본 대상에서 Enable Testability
빌드 옵션을 예로 설정해야합니다 .
아래 @earnshavian의 의견에 따르면, 이것은 애플 릴리스 노트에 따라 디버그 빌드에서만 사용해야합니다. “테스트 가능 빌드 빌드 설정은 내부 심볼 내보내기에 의존하지 않는 최적화를 금지하므로 디버그 구성에서만 사용해야합니다. 응용 프로그램 또는 프레임 워크 ” https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
답변
필자의 경우 테스트를 위해 사용자 정의 빌드 구성 (이라고도 함 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
답변
Bitrise를 사용하여 테스트를 실행할 때이 오류가 발생하기 시작했습니다.
다른 사용자가 말한다 달리이 없는 당 Target
으로, 또는 당 Schema
으로, 그것은 입니다 당 Configuration
기준. 사용중인 구성 에서 Target
-> Build Settings
탭-> 찾기 testability
-> 사용 을 선택하십시오 .
Apple은 AppStore가 아닌 디버깅에 사용중인 구성에서이 기능을 활성화 할 것을 권장합니다.