昔から開発してゐる 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" にしたら直りました。
アプリ本体のソースコードも XCTest ターゲットの "Target Membership" に加へてしまふという解決策もある様ですが、アプリ本体の各ソースファイルが二重にコンパイル・リンクされることになるのでよろしくないと思はれます。
cf. ios - When do app sources need to be included in test targets? - Stack Overflow