Objective-C コードを単体テストする最良の方法は何ですか?
-
09-06-2019 - |
質問
Objective-C コードの単体テストにはどのようなフレームワークが存在しますか?Apple Xcode とうまく統合できるフレームワークが欲しいです。
解決
Xcode には、次のような XCTest が含まれています。 OCUnit, は、Objective-C 単体テスト フレームワークであり、プロジェクトのビルド プロセスの一部として XCTest ベースの単体テストを実行するための完全なサポートを備えています。Xcode の単体テストのサポートについては、 Xcode の概要:単体テストの使用.
Xcode 2 日前に、私は Xcode 単体テストでいくつかの一般的なタスクを実行する方法について一連のウェブログ投稿を書きました。
XCTest ではなく OCUnit を使用していますが、概念はほぼ同じです。
最後に、Cocoa ユーザー インターフェイスのテストの作成方法についてもいくつかの投稿を書きました。Cocoa の構造は比較的簡単です。ほとんどの場合、イベント ループなどをスピンする必要がないからです。
これにより、モデル レベルのコードだけでなく、コントローラー レベル、さらにはビュー レベルのコードでもテスト駆動開発を行うことが可能になります。
他のヒント
チェックアウト GHユニット ガブリエル・ハンドフォード著:
「GHUnit の目標は次のとおりです。
Xcode内でユニットテストを実行して、Xcodeデバッガーを完全に利用できるようにします。テストを視覚化するのに役立つ簡単なGUI。スタックトレースを表示します。単純な(またはそうでない)ターゲットセットアップを備えたフレームワーク(ココアアプリの場合)としてインストール可能になります。または、iPhoneプロジェクトに簡単にパッケージ化できます。」
私は iPhone 用の Google ツールボックス テスト リグを使い始めましたが、それは私にとって非常にうまくいきました。
Google Toolbox for Mac (GTM) プロジェクトは、Apple の SenTestingKit フレームワーク (つまり、それ自体が OCUnit に基づいています) を拡張/強化するだけであることに注意してください。彼らはプロジェクトサイトで次のように述べています。
GTMには、標準のSentestEstingKitをいくつか強化するため、iPhoneでのユニットテスト、自動バインディング単位テスト、ログトラッキング、および単体テスト、およびコードの静的および動的テストを行うためのツールを行うことができます。
ユーザー インターフェイスのテストに関する次のコメントに注意してください。
GTMは、ユーザーインターフェイス単位テストを広範囲にサポートしています。標準のCOCOA/UIKIT UIオブジェクトのほぼすべてのイメージングおよび/または内部状態の両方のテストをサポートし、このサポートを独自のUIオブジェクトに簡単に拡張できるようにします。
彼らの「」を参照してください。コードの検証と単体テスト」のページに使い方が記載されています。
私は、GHUnit が Objective-C の最も先進的なテスト フレームワークであるという結論に達しました。私はやったことがあります 切り上げする 私のブログでフレームワークのテストを行っています。これは、展開 (iPhone、シミュレーター、または Mac OS ネイティブ) とアサート機能の点で最も柔軟です。GTM をベースとしているため、SenTestingKit に対する GTM の利点をすべて継承していますが、さらに多くの利点も追加しています。もう 1 つの利点は、メンテナンスが非常に活発に行われていることです。
統合する取り組みを行ってきました OCMock GHUnit に組み込むと、うまく動作します。コードを取得できます ギットハブ.
これが古い質問であることは承知していますが、xUnit スタイルのテスト (Test::Unit、JSUnit、JUnit など) よりも BDD スタイルのテスト (rspec、Jasmine など) を好む場合は、チェックアウトすることを検討してください。 杉. 。Cedar は Objective-C に BDD スタイルのテストを導入し、言語がクロージャをサポートするようになりました。
私たちは iOS プロジェクトに Cedar を喜んで使用しています。 ピボタルラボ, 私たちはその改善に積極的に取り組んでいます。フィードバックや提案は、sider-discuss@googlegroups.com までお寄せください。
gh-unit はテスト結果を表示する優れた GUI を備えているので、お勧めします。
の 単体テストのサポートが xcode にバンドルされています (セットアップが簡単なため) と組み合わせて オランナー (一部の自動テスト/Growl の良さのために) 現在、私のお気に入りの Obj-C 単体テスト設定です。
ここにたくさんあります
Sen:te (Xcode に含まれるテスト フレームワークの作成者) は、iPhone プロジェクトで OCUnit を使用する方法を説明しています。 シンプル-iPhone-iPad-単体テスト.
Cocoa with Love のマット・ギャラガーは、 とても良い記事 単体テストについて。
iOS 用のオープンソース BDD テスト フレームワークである Kiwi を検討することをお勧めします。キウイ
プロジェクトの WIKI をチェックして開始するか、Daniel Steinberg の著書「Test Driving iOS Development with Kiwi」を入手してください。テスト運転-iOS-開発
私は SimpleUnitTest を iPhone および iPad ライブラリで使用します。
http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html
単体テスト クラスを簡単に追加するための単体テスト Xcode テンプレートが付属しています。GTMをラッピングします。
文字通り、アクティブなプロジェクトにドロップして、3 分 (またはそれ以内) 以内に単体テストの追加を開始できます。
スペクタ は、XCTest 上で実行される最新の TDD (テスト駆動開発)/BDD (動作駆動開発) フレームワークです。iOS および Mac OS X プロジェクトの単体テストをサポートします。
あらゆるメソッドをテストできる「SenTestKit」を使用できることを願っています。