現在、MonoTouch/MonoDroid でアプリを開発しており、テストを改善したいと考えています (xamarin studio を使用して Mac で作業しています)。シミュレーターで実行される統合テストを作成する方法を知っています (少なくとも iOS ユニット テスト プロジェクトを使用した iOS では)。
私が今やりたいのは、1 つの指定されたクラスをテストする (そして、どのデバイス/シミュレーターでも実行されない - 単体テストのみの) 小さなモックのみのテストを使用した TTD です。私はJavaでMockitoを使用してそれを行っていましたが、Moq 4.0を使用してモノソリューションで同じことを試みました。
そのためには、Mono から何も必要とせず、単純なクラスだけを必要とします。そこで、新しい N ユニット プロジェクトを作成して、クラスをそのプロジェクトにリンクしようとしました。しかし、コードをコンパイルするには、そのクラス (Xamarin.Mobile.Geolocator、RestSharp、Geo など) で使用しているすべての参照を含める必要があります。これを行うと、コードはコンパイルされますが、最初のテストを実行すると、System.Core のバージョン xy が利用できないというエラーが表示されます。問題は理にかなっています.ライブラリは、そのテストプロジェクトでは利用できないシステムライブラリの特定のモノバージョンを使用しています.
私が見る唯一の解決策は、これらの参照を回避し、コードで使用するすべてのライブラリ クラスに対して空のスタブを記述してコンパイルすることです。しかし、それは多くの無駄な作業であり、私は本当に避けようとしています.
長い話を簡単に言うと、xamarin mono でのテスト ファースト開発の作業セットアップを手伝ってくれる人はいますか? Moq のようなモッキング フレームワークを使用でき、シミュレーターで単体テストを実行する必要がない場所はどこですか? 重要なのは、サードパーティのライブラリをモックする (そしてコードをテスト プロジェクトでコンパイルする) 解決策もあるということです。