2012-09-11 12 views
6

実際にNUnitとMonoDevelopテストランナーを使用して単体テストMonoTouchプロジェクトに良い方法がありますか?単体テスト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の本当の代替手段はありません。

答えて

8

実際にNUnitの

Touch.Unit

とMonoDevelopのテストランナーを使用してユニットテストMonoTouchでのプロジェクトに良い方法はありますか?

実際はありません。 MonoTouchプロジェクトは、iOS(OSXではなく)で実行する必要があるmonotouch.dllに依存しています。したがって、ランナーがシミュレータまたはデバイスで実行する必要があります。

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

以降のすべてがジェンキンス(CI)で動作するはずです。

Touch.Unitは、iOSシミュレータおよび/またはデバイスの両方を使用して(OSXを実行している限り)継続的なビルド/インテグレーションサーバで既に使用されています。詳細はhereです。

私は

Touch.UnitがUIテストについてないが、UI固有のコードについての限界を知っています。実際には、UIテスト時にはが悪いです(ただし、それはその点です)。

Touch.Unitは、iOSで実行されるテストランナーです。これにより、MonoTouch/iOS APIを独自のテスト(UIKitでも構いませんが、StoreKit、GameKit、* Kit、Foundationクラスなど)でも使用できるようになります。

Touch.Unitの代替手段はありませんか?

はい。あなたのビジネスロジックが十分に絶縁されているとmonotouch.dllに依存していない場合、あなたはそれを構築することができるはずのどちらかとして:

  • 非MonoTouchでプロジェクト(別のプロジェクト、同じソース)、すなわちとリンク通常のフレームワーク。または
  • ユニットテストアセンブリ内のソースへのリンク(標準フレームワークにリンクしています)。 古典 NUnitのテストアセンブリは、その後定期フレームワークプロジェクトだろうとMonoDevelopのユニットテストランナー内からデフォルト NUnitのランナーまたはから実行できるようになると

+0

返信いただきありがとうございます(btw。数分前に自分でTouch.Unitをコンパイルする方法についてメールを書きました))。私はTouch.UnitはUIテストではないことを知っています。あなたがより良い方法で説明したもの、特にmonotouch.dllからの依存関係です。私はテスト中の私の現在のシステムにその依存関係はないので、そんなに苦労して驚いた。 2種類のプロジェクトでクラスを管理するのは良い方法のようです。アドバイスありがとうございます。 –

関連する問題