2016-12-31 8 views
1

TLDR:ホストアプリケーションなしでiOS単体テストを実行する際の制限はありますか?iOSホストレステストターゲット(以前のロジックテスト)の制限事項は何ですか?


iOSのホストレステスト(Logic vs Application Tests)に関するインターネット上の投稿は、古くなっているようです。たとえば、thisthis 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 postthis postは現在Apple Webページにリンクしており、現在は死んでいると思われ、新しいページを見つけることができません。

Appleは差が単にテスト対象にホストアプリケーションを設定するか、されていないので、区別を最小化しているのだろうか。しかし、Logic Testsに制限があるかどうかは私には分かりません。私はアプリケーションテストスイートよりもはるかに高速に実行できる、私のアプリケーションの一部のために、より小さく、より孤立したテストターゲットを作成できるので、本当に好きです。

UPDATE:私はUI Testingについてのメモを追加したい考え出し。そのAppleのドキュメントによれば、Xcode 7以降、XCTestの一部としてUI Testingが追加されました。これは、ホストとホストレスユニットのテストターゲットについてのポイントとは正反対のようです。

答えて

0

Appleがテストターゲットにホストアプリケーションを設定しているかどうかの違いがあるため、区別が最小限に抑えられているのだろうかと思います。

ユニットテストとUIテストが存在することになります。両方ともアプリケーションの実行が必要です。 Appleは論理テストについて別途話しません。

+0

この例では、アプリケーションについて何もテストしません。それは実際に別のフレームワーク(ポッド)上のテストです。したがって、アプリケーションを実行する必要はありません。 – matt

+0

私は、テストのレポを更新して、アプリケーションの一部である同じ結果をテストに反映させました。 –

+0

また、テスト対象の設定からホストアプリケーションを削除した場合、単体テストにはアプリケーションの実行が含まれません。シミュレータではアプリを起動しません(何らかの理由でシミュレータ自体が起動します)。 –

関連する問題