回答:
メインターゲットで、Enable Testability
ビルドオプションを[はい]に設定する必要があります。
以下の@earnshavianによるコメントのとおり、これはAppleのリリースノートに従ってデバッグビルドでのみ使用する必要があります。「Enable Testabilityビルド設定は、デバッグ構成でのみ使用する必要があります。アプリまたはフレームワーク」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