LoginSignup
5
3

More than 3 years have passed since last update.

SwiftPMでQuickを入れたら"No such module 'Quick'" というエラーが出た話

Last updated at Posted at 2020-02-08

iOSテスト全書を読んでいると、第5章に「BDDによるアプリ開発」というQuick/Nimbleを利用したチュートリアルがあったので、早速やろうとしたらライブラリ導入の時点でつまづきました。

初歩的すぎて呆れる方もいるかもしれませんが、初心者の自分はこれで3時間以上溶かしてしまったので、同じ様な初心者の方にお役に立てれば幸いです。Qiita初投稿のため、内容に誤り等あればコメントでご指摘いただけると助かります。

ちなみに、簡単にSwiftPMの話もしています。

環境

MacOS Mojave 10.14.6
Xcode11.2.1
Swift5

まずライブラリを入れる

「iOSテスト全書」内ではCocoaPodsとCarthageでの導入手順が記載されていますが、私はSwiftPMで入れてみました。Xcode11からはGUIでパッケージ管理できるので便利ですね。
まずはXcodeのメニューから[File]→[Swift Packages]→[Add Package Dependency...]を選びます。
スクリーンショット 2020-02-08 17.22.00.png

すると、githubのリポジトリを検索するウインドウが出てくるので、お目当の「Quick」を検索します。ちなみに、github以外にあるものでもURLを指定すればパッケージを入れることができるそうです(私は未検証)。
スクリーンショット 2020-02-08 17.16.29.png

バージョンやブランチを聞かれます。今回は特にこだわらないのでそのままNextを押します。
スクリーンショット 2020-02-08 17.17.39.png

次は、ライブラリをどのターゲットに対して追加するかを聞かれます。デフォルトでは実際のソース(今回はqiitasample)が選ばれていますが、Quickはテストコードで使いたいライブラリなので、忘れずにテストコードの方(qiitasampleTests)を選びましょう。
スクリーンショット 2020-02-08 17.27.19.png

すると、Xcodeの左側に追加したパッケージと、その依存関係にあるパッケージが追加されます。Quickを入れただけでSwiftPMがNimbleも落としてきてくれたみたいですね。
スクリーンショット 2020-02-08 17.29.33.png

いきなりエラー

早速Quick/Nimbleを使ってテストコードを書いていきましょう!まずはQuickをimportして...
スクリーンショット 2020-02-08 17.36.45.png
それらしいものがサジェストされません。もう不穏ですね。
とりあえずQuickと手打ちしてビルド(Controll+B)してみると...
スクリーンショット 2020-02-08 17.36.59.png
No such module Quick
と言われてしまいました。いや、あるじゃん。
この後プロジェクトをクリーンしてみたり、エラー名でググってみたりしましたが、それらしい解決法に出会えずハマってしまいました...

解決法

どうにかできないかと思いXcodeのメニューを見ていると、[Product]の中に[Build for...]という項目を見つけました。よく見ると...
スクリーンショット 2020-02-08 17.41.38.png
Build For Testingがある!ここでようやく、Controll+Bではテストコードに対するビルドが行われていないことに気付きました。確かにXcode上部のバーにQuickがビルドされているような表示は出ていなかった気がする。
Build For Testingを実施すると、QuickやNimbleにもビルドがかかり、無事エラーも解消されました。

まとめ

  • テストコードに対してパッケージを追加した時は、Build For Testingを実行する。
  • ググってもわからないからといって諦めず、メニューをよく見てIDEの機能をよく確認する。
5
3
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
5
3