5

私は Typhoon と Cocoapods で Swift を使用しています。Typhoon コンポーネントの Integrationtest ( Typhoon-Example-App Testによる) を書き始めるまで、すべてがうまくいきました。 で行ったのと同じ方法でTyphoonFactory、 Testメソッドでをセットアップしたかったのです。テストを実行すると、常にsetUp()AppDelegate

TyphoonBlockComponentFactory assertIsAssembly:] + 244: エラー: MyApp.MyAssembly は TyphoonAssembly のサブクラスではありません

Typhoon によってスローされたエラー (kindOfClassボンネットの下でメソッドを使用しています)。同じコードが で完全に機能しておりAppDelegate、何が問題なのかわかりません。

この動作を確認するためisKindOfClassに、ブース クラスにチェックを実装しました (以下のコードを参照)。

  • AppDelegate -> true
  • MyComponentTest -> false

誰かが私をさらに助けてくれますか?ありがとう!

PodFile

inhibit_all_warnings!

target "MyApp" do
pod 'Typhoon', '2.1.0'
end

target "MyAppTests" do
pod 'Typhoon', '2.1.0'
end

MyAssembly.swift

public class MyAssembly : TyphoonAssembly{
    //Some definitions
}

AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    …
    var assembly : MyAssembly = MyAssembly()
    //Always returns „true“
    println("Is type of class: \(assembly.isKindOfClass(TyphoonAssembly))")
    …
}

MyComponentTest.swift

import XCTest
import MyApp

class MyComponentTest: XCTestCase {

    override func setUp() {
        super.setup()
        var assembly : MyAssembly = MyAssembly()
        //Always returns „false“!
        println("Is type of class: \(assembly.isKindOfClass(TyphoonAssembly))")

        //Error is thrown „MyApp.MyAssembly is not a sub-class of TyphoonAssembly“
        var factory : TyphoonComponentFactory = TyphoonBlockComponentFactory(assembly: assembly) as TyphoonComponentFactory
    }
}
4

1 に答える 1

7

他のユーザーのために:

Typhoon の Githubで説明したように、このエラーは Typhoon CocoaPod がアプリ ターゲットとテスト ターゲットの両方に含まれている場合に発生します。

アプリケーション スタイルのテスト (TEST_HOST フラグが設定されている) がほぼすべての場所でデフォルトになっているため、テスト ターゲットはメインのアプリ ターゲットから依存関係を自動的に継承します。Swift の場合、名前間隔を使用すると、テスト ターゲットで重複すると問題が発生する可能性があります。

したがって、解決策は、Typhoon と、アプリのその他の依存関係が継承されているため、テスト ターゲットから削除することです。次のように、テスト固有の依存関係を引き続き含めることができます。

target :tests, :exclusive => true do
   pod 'OCMockito'
   pod 'AnotherTestLibrary' #etc . . 
end
于 2014-08-20T11:58:53.963 に答える