6

NUnit と MonoDevelop テスト ランナーを使用して MonoTouch プロジェクトを単体テストする良い方法はありますか?

公式の MonoTouch 単体テスト プロジェクト タイプがあることは知っていますが、シミュレーター内でテストを実行する方法は私が望んでいる方法ではありません。今のところ、MonoDevelop テスト ランナーでテストを実行したいと考えています。後ですべて Jenkins (CI) で動作するはずです。

私は UI 固有のコードに関する制限を知っているので、テストしたいことはすべて MonoTouch 自体とは関係なく、すべて別のプロジェクト内に配置されたビジネス ロジックに関するものです。

MonoTouch ライブラリ タイプのプロジェクトにテストを追加することで、ここで説明されているように System.IO.FileNotFoundException を取得しています: http://ben.phegan.name/index.php/2011/02/28/monotouch-and-unit-testing/

別の NUnit テスト プロジェクトを使用すると、テスト対象のシステムを参照できません。そのプロジェクト タイプは MonoTouch ライブラリ プロジェクト タイプであり、もちろん互換性のないターゲット フレームワーク (vMonoTouch) を持っているからです。

つまり、Touch.Unit に代わるものはありませんね。

4

1 に答える 1

8

NUnitを使用してMonoTouchプロジェクトを単体テストする良い方法は実際にありますか

タッチユニット

そしてMonoDevelopテストランナー?

あまり。MonoTouch プロジェクトは、monotouch.dlliOS (OSX ではなく) で実行する必要があるプロジェクトによって異なります。そのため、ランナーをシミュレーターまたはデバイスで実行する必要があります。

あなたの質問にはいくつかの誤解があります:

後ですべてが Jenkins (CI) で動作するはずです。

Touch.Unit は、iOS シミュレーターおよび/またはデバイスの両方を使用して、継続的なビルド/統合サーバー (OSX を実行している限り) で既に使用されています。詳細はこちらからご覧いただけます

UI固有のコードに関する制限は知っていますが、

Touch.Unit はUI テストに関するものではありません。実際、UI テストはかなり苦手です (しかし、それは的外れです)。

Touch.Unit は、iOS で実行されるテスト ランナーです。これにより、独自のテスト内で MonoTouch / iOS API を使用できます (UIKit の場合もありますが、StoreKit、GameKit、*Kit、任意の Foundation クラスの場合もあります... 非常に大きな世界です)。

つまり、Touch.Unit に代わるものはありませんね。

はい。ビジネス ロジックが十分に分離されており、依存していない場合monotouch.dllは、次のいずれかとして構築できるはずです。

  • MonoTouch 以外のプロジェクト (別のプロジェクト、同じソース)、つまり通常のフレームワークにリンクされている。また
  • 単体テスト アセンブリ内からソースにリンクします (通常のフレームワークにリンクします)。

その古典的なnunit テスト アセンブリは、通常のフレームワーク プロジェクトになり、既定のNUnit ランナーから、またはMonoDevelop ユニット テスト ランナー内から実行できるようになります。

于 2012-09-11T13:27:11.977 に答える