3

サンプル プロジェクトを使用して Typhoon フレームワークをセットアップしようとしていますが、シミュレーターを実行すると問題なく動作しますが、テストを実行しようとするとエラーが発生します。エラーは次のとおりです。

NSInvalidArgumentException'、理由: 'クラス 'DI_Example.MyAssembly' は TyphoonAssembly のサブクラスではありません'

さて、ここここで、これは CocoaPods が原因で Typhoon パッケージが 2 回リンクされていることが原因であると読みました。これは私のPodfileであり、2回リンクする必要はないようです

platform :ios, '8.0'

target 'DI_Example', :exclusive => true do
    pod 'Typhoon', '~> 2.3' end

target 'DI_ExampleTests', :exclusive => true do end

inhibit_all_warnings!

また、テスト ターゲットをアプリケーション スタイルからロジック スタイルに変更すると、すべて正常に動作するように見えます (パッケージが 2 回インポートされていないためと想定しています)。誰かが私がしていることに問題を見つけることができますか?

テストにヒットする前にエラーがスローされたように見えるので、2つのターゲットをリンクすることに関係していると推測しています

これが私のテストです(ホストアプリケーションなしに設定すると合格です)

var controller: HomeViewController!
override func setUp() {
    super.setUp()
    let ctrlAssembly = ControllersAssembly()
    let blAssembly = BusinessLogicAssembly()
    ctrlAssembly.blAssembly = blAssembly
    let factory = TyphoonBlockComponentFactory(assemblies: [blAssembly, ctrlAssembly])
    let configurer = TyphoonConfigPostProcessor()
    configurer.useResourceWithName("Info.plist")
    factory.attachPostProcessor(configurer)


    controller = factory.componentForKey("homeViewController") as HomeViewController
}

func testControllerTitle() {
    // Arrange

    // Act
    controller.viewDidLoad()

    // Assert
    println(controller.title)
    XCTAssertTrue(controller.title == "Root View", "Title is set")
}
4

1 に答える 1

2

だから私は問題を解決することができました。問題は、テストターゲットに依存関係がなかったPods-PocketForecastTests.debug.xcconfigため、プロジェクト構成でアプリターゲットと同じ構成ファイルを使用していなかったため、2回リンクされたと思われることです。

于 2014-12-16T15:59:23.430 に答える