1. ホーム
  2. xcode

[解決済み】Xcodeのユニットテストで@testableを使用すると「No such module」と表示される。

2022-04-11 07:18:39

質問

最近、Xcode 7 beta 5にアップデートしました。以前のプロジェクトにユニットテストを追加しようとしたのですが、エラーメッセージ "No such module [myModuleName]" を @testable import myModuleName という行があります。

試してみた

  • でプロジェクトをクリーニングします。 オプション ビルドフォルダのクリーニング
  • Build Options で "Enable Testability" (デバッグ) が Yes になっていることを確認する。
  • テストターゲットを削除し、iOS Unit testing bundleを再追加する。

このプロジェクトではどれもうまくいきませんでした(しかし、別のプロジェクトではテストが機能するようになりました)。どなたかこの問題に直面し、解決された方はいらっしゃいますか?

解決方法は?

私の場合、うまくいった答え

答えは、私のプロジェクトにいくつかのエラーがあり、それがビルドを失敗させるというものでした。(そのエラーを修正し、再度クリーンアップとビルドを行ったところ、うまくいきました。

なお、これらのエラーは、最初は表示されませんでした。表示させるためには

  • No such module" エラーが発生しているTestファイル全体をコメントアウトしてください。
  • プロジェクトをもう一度実行してみてください。

もし他のエラーがあれば、今すぐ表示されるはずです。それらを修正し、テストファイルのコードをアンコメントします。No such module"のエラーは、私の場合はなくなりました。


万が一、他の方がこれで解決しない場合は、以下の方法も試してみてください。

ビルドフォルダをクリーンアップする

製品メニューを開き オプション をクリックし、[ビルドフォルダの削除...]をクリックします。

Enable TestabilityがYesに設定されていることを確認します。

プロジェクトナビゲータで、プロジェクト名をクリックします。ビルド設定]を選択し、[ビルドオプション]までスクロールダウンします。Enable Testability] が [Yes] (デバッグ用) であることを確認します。

Tests ターゲットを削除して再追加

他のことをやっていれば、おそらくこの作業は必要ないでしょう。しかし、もしそうであれば すでに書いたUnit Testsを保存することを忘れないでください。

プロジェクトナビゲータでプロジェクト名をクリックします。次に、Tests ターゲットを選択します。下部のマイナス(-)ボタンをクリックすると削除されます。

次に、プラス(+)ボタンをクリックして、iOS Unit Testing Bundleを選択して、再び追加します。このように、UI Testing Bundleも同じように追加することができます。

その他のアイデア

  • 必要なクラスがすべてテストターゲットのメンバーであることを確認します。
  • 必要なライブラリがすべて追加されていることを確認します。
  • モジュール名が正しく書かれていることを確認してください ( 本解答 ).

または...

他にうまくいったものがあれば、下にコメントや回答を残してください。

関連