プロジェクトにいくつかの UI テストを実装しようとしています。テスト ケースを記録し、いくつかのアサートを追加してから、テストを実行します。これは問題なく動作しますが、テスト内からアプリケーション モジュールにアクセスしようとすると、リンカーがエラーをスローします (以下を参照)。
アプリケーション ソース ファイル内:
func foo() {
assert(true)
}
UI テストでは:
import XCTest
@testable import MyApp
func testExample() {
foo()
}
エラー:
アーキテクチャ i386 の未定義シンボル: "MyApp.foo () -> ()"、参照先: MyAppUITests.MyAppUITests.testExample (MyAppUITests.MyAppUITests)() -> () in MyAppUITests.o ld: symbol(s) not found forアーキテクチャ i386 clang: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを表示するには -v を使用します)
アーキテクチャ x86_64 の未定義のシンボル: "MyApp.foo () -> ()"、参照先: MyAppUITests.MyAppUITests.testExample (MyAppUITests.MyAppUITests)() -> () in MyAppUITests.o ld: symbol(s) not found forアーキテクチャ x86_64
ここで同様の問題が報告されています:
https://forums.developer.apple.com/thread/20609
しかし、解決策はありません。@testable
単に正しく機能しないように思えます。developer.apple.comの担当者は、設定に Test Host と Bundle Loader を追加することで回避しようとしましたが、これは正しいアプローチではないと思います。はすべてを機能させるべきだと思いますが@testable
、現時点ではそうではありません。どんな助けでも大歓迎です!