LoginSignup
20
19

More than 5 years have passed since last update.

XCTest ターゲットのビルドでリンカーエラー

Posted at

昔から開発してゐる iOS 用アプリのビルドターゲットに対して XCTest のビルドターゲットを追加してテストケースを書いたのですが、いざ ⌘U でテストを実行しようとしてみると、リンカーがエラーを吐いて止まってしまひました。

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_Foo", referenced from:
      objc-class-ref in FooTest.o
     (maybe you meant: _OBJC_CLASS_$_FooTest)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

どうやらテストケースのコードからテスト対象であるアプリ本体のコードがうまく参照できてゐない様子。
"Build Settings" で "Symbols Hidden by Default" の設定を "No" にしたら直りました。 symbolshidden.png

アプリ本体のソースコードも XCTest ターゲットの "Target Membership" に加へてしまふという解決策もある様ですが、アプリ本体の各ソースファイルが二重にコンパイル・リンクされることになるのでよろしくないと思はれます。


cf. ios - When do app sources need to be included in test targets? - Stack Overflow

20
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
19