次のエラーのため、テストケースを実行できません。
2日間から検索と解決を試してみてください。しかし、この問題を解決できなかった人は助けてください。
Xcode 10.1で生成されたプロジェクトでこの問題を再現できました。 Swift 4.2とCocoaPodsを依存関係マネージャーとして使用しました。次のPodfileがありました。
# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'
target 'MyApp' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for MyApp
pod 'Alamofire', '4.8.1'
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
その後、use_frameworks!
、詳細については このリンク を参照してください。
# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'
target 'MyApp' do
# Pods for MyApp
pod 'Alamofire', '4.8.1'
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
私もこのような警告を受け取りました:
[!] The `MyAppUITests [Debug]` target overrides the `ALWAYS_EMBED_Swift_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-MyApp-MyAppUITests/Pods-MyApp-MyAppUITests.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
そのため、MyAppUITestsビルド設定からこの行を削除しました。
その後、pod deintegrate && pod install
そして、問題は消えました。おそらく、より多くの依存関係を持つプロジェクト( here など)の場合、別のソリューションを使用する必要があります。
これは、ポッドがフレームワークターゲットにのみ適用され、テストターゲットには適用されないためです。テストターゲットをポッドファイルに追加します。
例:
target 'MyFramework' do
use_frameworks!
pod 'Alamofire', '~> 4.5'
end
target 'MyFrameworkTests' do
use_frameworks!
pod 'Alamofire', '~> 4.5'
end
UITestターゲットビルド設定の展開ターゲットが、テストしようとしているホストアプリケーションと同じに設定されていることを確認します。私の場合、後でUITestingターゲットを追加し、デフォルトのデプロイメントターゲットiOS 12で作成しました。その後、iOS 12未満でUITestを実行しようとすると、質問に記載されているエラーが発生しました。
私の場合、UIテストのターゲットをuse_frameworks!
で区切る必要がありました。
Podfileの上部のどこかにuse_frameworks!
をグローバルに指定した場合、UIテストのターゲットをネストされた構造からそれ自体に移動しても役に立ちません。
エラー(元)のあるPodfile:
platform :ios, '10.0'
inhibit_all_warnings!
use_frameworks!
target 'MyProject' do
pod 'R.Swift', '~> 5.0'
pod 'Moya/RxSwift', '~> 12.0'
# and other pods
target 'MyProjectTests' do
inherit! :search_paths
pod 'iOSSnapshotTestCase', '~> 6.0'
end
target 'MyProjectUITests' do
inherit! :search_paths
end
end
エラーのあるPodfile(最初に修正しよう):
platform :ios, '10.0'
inhibit_all_warnings!
use_frameworks!
def shared_pods
pod 'R.Swift', '~> 5.0'
end
target 'MyProject' do
shared_pods
pod 'Moya/RxSwift', '~> 12.0'
# and other pods
target 'MyProjectTests' do
inherit! :search_paths
pod 'iOSSnapshotTestCase', '~> 6.0'
end
end
target 'MyProjectUITests' do
shared_pods
end
最終的な作業Podfile:
platform :ios, '10.0'
inhibit_all_warnings!
def shared_pods
pod 'R.Swift', '~> 5.0'
end
target 'MyProject' do
use_frameworks!
shared_pods
pod 'Moya/RxSwift', '~> 12.0'
# and other pods
target 'MyProjectTests' do
inherit! :search_paths
pod 'iOSSnapshotTestCase', '~> 6.0'
end
end
target 'MyProjectUITests' do
shared_pods
end
フレームワークの場所を、ターゲット> mytestTarget>ビルド設定> Runpath Search Pathの下のRunpath検索パスに追加する必要がありました
レガシービルドシステムへの切り替えにより、Xcode 10の問題が修正されました。
私の問題を解決したのは、次の手順に従うことでした:1)ポッドファイルからUITestsターゲットを削除します。最初は、ポッドファイルに次のものがありました。
target 'XUITests' do
inherit! :search_paths
end
2)ポッドを分解する(ポッドを分解する)
3)ポッドをインストールします(ポッドインストールを使用)
4)プロジェクトをクリーンアップして、プロジェクトまたはUITestを実行します
この問題を修正するには、Roman Podymovの回答に従ってpod deintegrate
その後pod install
私にとって、エラーはUIテストのビルド時でした。解決策:ターゲットのiOSバージョンが間違っていました。テスト済みのターゲットと同じバージョンに置き換え、すべてが機能します!!
テスト対象の変更inherit! :search_paths
からinherit! :complete
。これが何をするかについては documentation をご覧ください。