TLDR:ホストアプリケーションなしでiOS単体テストを実行する際の制限はありますか?iOSホストレステストターゲット(以前のロジックテスト)の制限事項は何ですか?
iOSのホストレステスト(Logic vs Application Tests)に関するインターネット上の投稿は、古くなっているようです。たとえば、thisとthis Stack Overflow postによれば、論理テストでUIFont
をインスタンス化することはできません。私はXcode 8.2.1とiOS 10.2を実行しているiPhone 7シミュレータを使ってみましたが、うまくいくようです。ここで
は、このようなテストとサンプルプロジェクトです: https://github.com/lyahdav/SnapshotLogicTest
this blog postによると:
これは、実際に彼らはテスト- のUIApplicationのインスタンスを起動していないXcodeのロジックの制限ですそして、UIKitの
とうまく
をプレイしていないしかし、あなたは私のサンプルプロジェクトを見れば、それはUIViewのを作成し、を使用しています上をアサートするとロジックテストで同じレンダリングが行われ、すべて正常に動作しているようです。
また、私はもう、アプリケーション・テスト対ロジックのためのAppleのドキュメントを見つけることができません。たとえば、this postとthis postは現在Apple Webページにリンクしており、現在は死んでいると思われ、新しいページを見つけることができません。
Appleは差が単にテスト対象にホストアプリケーションを設定するか、されていないので、区別を最小化しているのだろうか。しかし、Logic Testsに制限があるかどうかは私には分かりません。私はアプリケーションテストスイートよりもはるかに高速に実行できる、私のアプリケーションの一部のために、より小さく、より孤立したテストターゲットを作成できるので、本当に好きです。
UPDATE:私はUI Testingについてのメモを追加したい考え出し。そのAppleのドキュメントによれば、Xcode 7以降、XCTestの一部としてUI Testingが追加されました。これは、ホストとホストレスユニットのテストターゲットについてのポイントとは正反対のようです。
この例では、アプリケーションについて何もテストしません。それは実際に別のフレームワーク(ポッド)上のテストです。したがって、アプリケーションを実行する必要はありません。 – matt
私は、テストのレポを更新して、アプリケーションの一部である同じ結果をテストに反映させました。 –
また、テスト対象の設定からホストアプリケーションを削除した場合、単体テストにはアプリケーションの実行が含まれません。シミュレータではアプリを起動しません(何らかの理由でシミュレータ自体が起動します)。 –