プロジェクトワークスペースに統合した既存のプロジェクトのテストケースを作成するために、OCMockとの連携を開始しました。これに記載されているすべての手順を実行した後 link
テストケースを最初に実行したとき、このエラーが発生しました。私はそれを検索し、「新しいターゲットを作成する」、「Xcodeを再起動する」などの解決策をいくつか試しましたが、助けにはなりませんでした。何か案が?
CocoapodsとCarthageの両方のメモとデモアプリケーションがここにあります https://github.com/onmyway133/TestTarget
Runpath Search Paths
が$(FRAMEWORK_SEARCH_PATHS)
を指すように設定します詳細情報
私はカルタゴを使用しており、問題はテスト対象の依存関係を検索していました。修正:
$(PROJECT_DIR)/Carthage/Build/iOS
をRunpath Search Paths
に追加します
ここで参照を見つけることができます: Carthage issue
CocoaPodsを使用しており、UIテストターゲットがアプリターゲット内に埋め込まれている場合、別のソリューションがあります。残念ながら、これはデフォルトテンプレート(pod init
)の場合です。
次のように、アプリのターゲットからUIテストターゲットを移動してみてください:
から:
platform :ios, '11.0'
use_frameworks!
target 'MyApp' do
# Pods for MyApp
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
に:
platform :ios, '11.0'
use_frameworks!
# Pods shared between MyApp and MyAppUITests
target 'MyApp' do
# Pods for MyApp only
end
target 'MyAppUITests' do
# Pods for testing
end
この問題スレッドのクレジットはSpacyRicochetに送られます: https://github.com/CocoaPods/CocoaPods/issues/4752#issuecomment-305101269
このエラーに関する私の経験を共有するために:
Fastlane + cocoapodsを使用しています。
2つの動的フレームワークを備えたワークスペースがあります。
依存関係:
依存関係はPodfileで定義されています。
フレームワークBテストの実行中にエラーが発生しました。
私の場合、問題はB.frameworkターゲットのAFNetworkingへの依存関係の欠落に関連していました。
PodfileのB.frameworkでAFNetworkingにポッドの依存関係を追加すると、すべてが解決されました。
そのため、ターゲットBが正常にコンパイルされた場合でも、AFNetworkingはBテストアプリに組み込まれず、シミュレータはBテストアプリを実行できず、これを発生させました"非常に意味のある"(*)エラー。
(*)Appleに感謝します!
私の解決策は、テストターゲットに「ファイルのコピーフェーズ」を追加することでした。そこで宛先をフレームワークに設定し、フレームワークに+記号を追加しました。
私の場合、リンクされたファイルには何も問題はありませんでした。シミュレーターは、「アプリ名が通知を送信したい」など、アプリがトリガーしたメッセージにちょっと立ち往生していました。 [OK]を押すと、次回XCTestsが正常に機能しました。
私の場合、Carthageを使用して統合したQuickおよびNimbleライブラリのRun Scriptフェーズは追加していませんでした。
私の場合は特別でした。 2つのファイルをテストクラスとして使用しました。 1つは完全に機能し、もう1つはそのエラーがありました。
同じフレームワークに対する両方のリンク。
派生データのクリア
ウィンドウ => プロジェクト => 削除(プロジェクトで)
幸運と幸せなテスト!
私の場合、Build Active Architecture OnlyはYESに設定されていました。
プロジェクトとターゲットの場合:ビルド設定->アーキテクチャ-> Build Active Architecture OnlyはYESではなくNOにする必要があります
私は同じ問題を抱えていましたが、ここで提案されたものはすべて成功せずにすでに試しました。
別のシミュレータでテストを実行すると、問題が解決しました。その後、元のシミュレーターでもエラーが発生しなくなりました。
うわー、私はこれに多くの時間を浪費しました、私のテストバンドルは選択された私のアプリケーションへの「ホストアプリケーション」を持っていました。他のテストバンドルには含まれていません。
このソリューションはすべての状況に適したソリューションではないかもしれませんが、私のテストは主に動的ライブラリをテストすることであり、実際にホストアプリケーションを実行する必要はありませんでした。上記のエラーが発生していましたが、これをオフにすると、エラーが発生せずにテストを実行でき、ブレークポイントが機能しました。私はMacOSを実行していましたが、おそらく他の環境でも同様です。このソリューションはすべての状況に適したソリューションではないかもしれませんが、私のテストは主に動的ライブラリをテストすることであり、実際にホストアプリケーションを実行する必要はありませんでした。
テストバンドルで、[全般]-> [テスト]-> [ホストアプリケーション]を[なし]に設定します。
I tried many different options but none helped me except below and wasted lot of time, posting this so that really help and save time on this:
Follow all of the instructions for Full Manual Configuration
https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md#full-manual-configuration
Tips
When you come to the part where you are executing xcodebuild, if the build fails, and the log mentions "RoutingHTTPServer" or "YYCache", add these two frameworks on the Build Phases tab of the WebDriverAgentRunner target
Open the WebDriverAgent.xcodeproj
Select 'Targets' -> 'WebDriverAgentRunner'
Open 'Build Phases' -> 'Copy frameworks'
Click '+' -> add RoutingHTTPServer
Click '+' -> add YYCache
https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-382344697
https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-383362376
The build/test may also fail due to the WebDriverAgentRunner app/developer being untrusted on the device. Please trust the app and try again.
While trying to access the WebDriverAgent server status, if it tries to connect on port 0, hardcode port 8100 in appium-xcuitest-driver/WebDriverAgent/WebDriverAgentLib/Routing/FBWebServer.m
Original line: server.port = (UInt16)port;
New line: server.port = 8100;
https://github.com/facebook/WebDriverAgent/issues/661#issuecomment-338900334
誰かの時間を節約できることを願って私の答えを共有したいと思います。
私にとって.mファイルはBuild Phases-> Compile Sourcesで適切にリンクされていませんでした
私の場合、デフォルトの空のテストで完全にクリーンなプロジェクトがありました。ポッドを追加した場合、このエラーを受け取りました。解決策は、テスト対象の少なくとも1つのファイルがFoundationをインポートすることでした
import XCTest
import Foundation
@testable import CVZebra
class CVZebraTests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
私の場合、UIテストターゲットのOther Linker Flagsから$(inherited)
を削除する必要がありました。ココアポッド経由で静的ライブラリをインストールしました。
Xcode 10には自動的に追加されるプロジェクト設定がいくつかありますが、それらは常にではなく、時々発生します。 Xcode 10をダウンロードしたら、コンピューターを再起動します。それが私にとってこれを修正したものです。これらの答えのどれも私のためにそれを修正しませんでした。これがお役に立てば幸いです。もっと良い答えができたらいいなと思います。
私の場合、シミュレーターでアプリに問題がありました。問題が発生する前に、db-migration(レルム)を処理しましたが、失敗してdbが破壊されました。そのため、シミュレータでアプリを削除した後、すべてが正常に機能しました。
Xcode 9.4.1からXcode 10.1に切り替えると、私の場合の問題は解決しました。
私にとっては、デバイスの「設定->一般」の下にある「デバイス管理」で開発者を「信頼」する必要がありました。 (設定->一般->デバイス管理-> DeveloperID->「アプリを信頼する」) Apple IDを使用してサイドローディングでアプリを実行していました。
私の場合、ビルド設定->アーキテクチャはarmv7にのみ設定され、ホストアプリケーションと同じARCHS_STANDARDに変更しました
それでもこの問題が発生する場合は、 this answerが役立ちました。 Always Embed Swift Standard LibrariestoNoプロジェクト設定で。 UIテストターゲット用に行いました。
私にとって問題はポッドファイルでした
新しいターゲットを作成しましたが、ポッドファイルにターゲットを追加するのを忘れました
target 'mobilesdkIntegrationTests' do
// write here any predefined pods if any, like
testing_pods
end
ポッドファイルにターゲットを追加するだけで問題が修正されました
私の場合、ヘッダーファイルでプロパティを読み取り専用として宣言しました。
// In .h file
@property (nonatomic, readonly) NSUInteger count;
しかし、セッターが生成されるように、この宣言を.mに追加するのを忘れていました。
// In .m file
@property (nonatomic, assign) NSUInteger count;
このエラーで明らかになった理由は完全にはわかりませんが、.mにその行を追加すると問題が修正されます。