web-dev-qa-db-ja.com

SenTestingKitに対するXCTestの利点は何ですか?

IOSでユニットテストをしたい。デフォルトでは、テストクラスはXcode5のXCTestフレームワーククラスを使用して作成されます。以前のバージョンのiOSではSenTestingKitを使用しました。これら2つのフレームワークの違いは何ですか? XCTestフレームワークの利点は何ですか。関連ドキュメントをグーグルで検索しましたが、見つかりませんでした。私が見つけたのは、キット内で使用するインターフェイスクラスだけです。誰かが私に関連リソースを教えてもらえますか?.

24
sridevi

Appleのドキュメントは、テストに関して特に不足しています。 XCTestで5分間過ごしたことが私をそれに夢中にさせたので、それは残念です。だから、ここにあなたが役に立つと思うかもしれないいくつかのドキュメントがあります。

まず、テストに関するWWDCビデオを停止して視聴します。 https://developer.Apple.com/wwdc/videos/?include=409#409 (登録済みの開発者である必要があります)

次に、ボットについて読んでください。それらはXCTestの本当の魔法です。私は現在、MavericksServerを実行しているMacMiniの環境を、ユニットテストとレポートを同時に実行するiPod Touch、iPhone、iPadの小さなアレイに接続してセットアップしています。魔法の近くだ。

https://developer.Apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/000-About_Continuous_Integration/about_continuous_integration.html#//Apple_ref/doc/uid/TP40013292

そうは言っても、私は2つを比較するのに十分なSenTestを知りません。しかし、私はXCTestを学んでいるので、これまでに実際に掘り下げていることについていくつか考えます。

  • すでにそこにあります。ダウンロードするものは何もありません。テストしたいオブジェクトを作成すると同時に、テストクラスオブジェクトを作成できます。ラッド。
  • Xcodeと非常に深く統合されているため、Gutterでテストカバレッジを確認できます。コンパニオンビューを使用して、ソースからのテスター、またはテスターメソッドからのソースを表示することもできます。また、常に最新の状態になります。Appleが何かを「壊した」ため、Xcodeとの統合を修正するのを待つ必要はありません。
  • 継続的インテグレーション。ボットは魔法のようで、とても簡単です。また、小さなフリンジ特典であるGitホスティングも利用できますが、Gitを内部でホストしたいが、GitHubEnterpriseにお金をかけたくない場合はさらにそうです。

そして、測定のためのいくつかの短所:

  • ドキュメントの欠如。アサーションのリストのヘッダーを読むように私に頼むのは大変な動きです。私は間違いなくAppleはこれをすぐに修正するでしょうが、すぐには十分ではありません。
  • あなたはXcodeともう少し深く結びついています。開発の欠点ではありませんが、XCTestのスクリプトは他のオプションほど洗練されていません。
  • 継続的インテグレーションにはOSXServerが必要です。本当に必要な場合は同じマシン上に置くことができますが、Mountain Lion Serverを所有している場合でも、購入するのは$ 20です。私はこれについてはまったく苦いことはありません(ha)。

私の2セント。それが役に立てば幸い。リンクしたビデオを視聴することを強くお勧めします。XCTestを使用しているかどうかに関係なく、ライブテストの作成を行い、一般的な単体テストの非常に説得力のある事例を作成します。

18
eddieroger

現在、利点はほとんどないようですが、時間の経過とともに変化することが期待されているため、コミュニティwikiを開始していくつかを文書化します。

  • _XCTAssert…_ファミリーのマクロは、formatパラメーター(テストに合格する理由のコメントに使用)を完全に省略して処理できます。これは、エディターで単純なテスト(テスト自体から何が行われているのかが明らかな場合)をクリーンに保つのに便利です。 _STAssert…_では、代わりにformatパラメータをnilなどにする必要がありました。
  • 汎用のXCTAssert()マクロがあります。これは、いくつかのタイプのチェックをSTAssertTrueに詰め込むよりもすっきりしています。
2
Mike Abdullah

XCTestはデフォルトでios7に含まれており、新しい継続的インテグレーション機能とより適切に統合されます。
https://developer.Apple.com/technologies/tools/

2
forbra