web-dev-qa-db-ja.com

テストターゲットXでエラーが発生しました(早期に予期しない終了、操作がブートストラップを完了しない-再起動は試行されません)

プロジェクトワークスペースに統合した既存のプロジェクトのテストケースを作成するために、OCMockとの連携を開始しました。これに記載されているすべての手順を実行した後 link

テストケースを最初に実行したとき、このエラーが発生しました。私はそれを検索し、「新しいターゲットを作成する」、「Xcodeを再起動する」などの解決策をいくつか試しましたが、助けにはなりませんでした。何か案が?

73
Varun Mehta

CocoapodsとCarthageの両方のメモとデモアプリケーションがここにあります https://github.com/onmyway133/TestTarget

  • すべてのフレームワークがテスト対象にリンクされていることを確認してください
  • Runpath Search Paths$(FRAMEWORK_SEARCH_PATHS)を指すように設定します

詳細情報

117
onmyway133

私はカルタゴを使用しており、問題はテスト対象の依存関係を検索していました。修正:

$(PROJECT_DIR)/Carthage/Build/iOSRunpath Search Pathsに追加します

ここで参照を見つけることができます: Carthage issue

17

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

11
hujunfeng

このエラーに関する私の経験を共有するために:

Fastlane + cocoapodsを使用しています。

2つの動的フレームワークを備えたワークスペースがあります。

  • 基本構想
  • B.framework

依存関係:

  • Aはココポッドを使用したAFNetworkingに依存
  • BはAに依存

依存関係はPodfileで定義されています。

フレームワークBテストの実行中にエラーが発生しました。

私の場合、問題はB.frameworkターゲットのAFNetworkingへの依存関係の欠落に関連していました。

PodfileのB.frameworkでAFNetworkingにポッドの依存関係を追加すると、すべてが解決されました。

そのため、ターゲットBが正常にコンパイルされた場合でも、AFNetworkingはBテストアプリに組み込まれず、シミュレータはBテストアプリを実行できず、これを発生させました"非常に意味のある"(*)エラー。

(*)Appleに感謝します!

5
Lubbo

私の解決策は、テストターゲットに「ファイルのコピーフェーズ」を追加することでした。そこで宛先をフレームワークに設定し、フレームワークに+記号を追加しました。

5
leizeQ

私の場合、リンクされたファイルには何も問題はありませんでした。シミュレーターは、「アプリ名が通知を送信したい」など、アプリがトリガーしたメッセージにちょっと立ち往生していました。 [OK]を押すと、次回XCTestsが正常に機能しました。

5
FeltMarker

私の場合、Carthageを使用して統合したQuickおよびNimbleライブラリのRun Scriptフェーズは追加していませんでした。

2
Ben Thomas

私の場合は特別でした。 2つのファイルをテストクラスとして使用しました。 1つは完全に機能し、もう1つはそのエラーがありました。
同じフレームワークに対する両方のリンク。

解決

派生データのクリア

ウィンドウ => プロジェクト => 削除(プロジェクトで)

幸運と幸せなテスト!

2
Yitzchak

私の場合、Build Active Architecture OnlyはYESに設定されていました。

プロジェクトとターゲットの場合:ビルド設定->アーキテクチャ-> Build Active Architecture OnlyはYESではなくNOにする必要があります

2
Mihriban Minaz

私は同じ問題を抱えていましたが、ここで提案されたものはすべて成功せずにすでに試しました。

別のシミュレータでテストを実行すると、問題が解決しました。その後、元のシミュレーターでもエラーが発生しなくなりました。

2
fredpi

うわー、私はこれに多くの時間を浪費しました、私のテストバンドルは選択された私のアプリケーションへの「ホストアプリケーション」を持っていました。他のテストバンドルには含まれていません。

このソリューションはすべての状況に適したソリューションではないかもしれませんが、私のテストは主に動的ライブラリをテストすることであり、実際にホストアプリケーションを実行する必要はありませんでした。上記のエラーが発生していましたが、これをオフにすると、エラーが発生せずにテストを実行でき、ブレークポイントが機能しました。私はMacOSを実行していましたが、おそらく他の環境でも同様です。このソリューションはすべての状況に適したソリューションではないかもしれませんが、私のテストは主に動的ライブラリをテストすることであり、実際にホストアプリケーションを実行する必要はありませんでした。

テストバンドルで、[全般]-> [テスト]-> [ホストアプリケーション]を[なし]に設定します。

2
possen

Cocoa Touch Frameworkの作成中、テストを実行しようとするたびに、OPが書いたのと同じエラーメッセージで終了しました。

TESTのビルド構成をデバッグからリリースに変更することで修正しました。

ステップ1

enter image description here

ステップ2

enter image description here

ステップ3

enter image description here

Runpath Search Pathsの追加の構成は必要ありませんでした。

バージョン1.6.1およびXcode 10.1でCocoapodsを使用しています

1
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
1
Ravi

誰かの時間を節約できることを願って私の答えを共有したいと思います。

私にとって.mファイルはBuild Phases-> Compile Sourcesで適切にリンクされていませんでした

0
Varun Mehta

私の場合、デフォルトの空のテストで完全にクリーンなプロジェクトがありました。ポッドを追加した場合、このエラーを受け取りました。解決策は、テスト対象の少なくとも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.
        }
    }

}
0
MarekM

私の場合、UIテストターゲットのOther Linker Flagsから$(inherited)を削除する必要がありました。ココアポッド経由で静的ライブラリをインストールしました。

0
zuziaka

Xcode 10には自動的に追加されるプロジェクト設定がいくつかありますが、それらは常にではなく、時々発生します。 Xcode 10をダウンロードしたら、コンピューターを再起動します。それが私にとってこれを修正したものです。これらの答えのどれも私のためにそれを修正しませんでした。これがお役に立てば幸いです。もっと良い答えができたらいいなと思います。

0
ScottyBlades

私の場合、シミュレーターでアプリに問題がありました。問題が発生する前に、db-migration(レルム)を処理しましたが、失敗してdbが破壊されました。そのため、シミュレータでアプリを削除した後、すべてが正常に機能しました。

0
Sandu

Xcode 9.4.1からXcode 10.1に切り替えると、私の場合の問題は解決しました。

0
pmdj

私にとっては、デバイスの「設定->一般」の下にある「デバイス管理」で開発者を「信頼」する必要がありました。 (設定->一般->デバイス管理-> DeveloperID->「アプリを信頼する」) Apple IDを使用してサイドローディングでアプリを実行していました。

0
infiniteLoop

私の場合、ビルド設定->アーキテクチャはarmv7にのみ設定され、ホストアプリケーションと同じARCHS_STANDARDに変更しました

0
Felipe FMMobile

それでもこの問題が発生する場合は、 this answerが役立ちました。 Always Embed Swift St​​andard LibrariestoNoプロジェクト設定で。 UIテストターゲット用に行いました。

0
stellz

私にとって問題はポッドファイルでした
新しいターゲットを作成しましたが、ポッドファイルにターゲットを追加するのを忘れました

target 'mobilesdkIntegrationTests' do
  // write here any predefined pods if any, like
  testing_pods
end

ポッドファイルにターゲットを追加するだけで問題が修正されました

0
Sultan Ali

私の場合、ヘッダーファイルでプロパティを読み取り専用として宣言しました。

// In .h file
@property (nonatomic, readonly) NSUInteger count;

しかし、セッターが生成されるように、この宣言を.mに追加するのを忘れていました。

// In .m file
@property (nonatomic, assign) NSUInteger count;

このエラーで明らかになった理由は完全にはわかりませんが、.mにその行を追加すると問題が修正されます。

0
JohnG