こんにちは。エクセルソフトの田淵です。
前回は Mvvm ライクなアプリを作成しました。
今回は UnitTest をしてみたいと思います。
UnitTest プロジェクト作成
UnitTest をするには、Visual Studio でプロジェクトを追加し、「テスト>単体テストプロジェクト」を作成します。
作成された単体テストプロジェクトの「参照」を右クリックして、Xamarin.Forms のプロジェクトを追加します。
テストを書いてみよう
基本的な処理は、public void TestMethod1(){ }
などのテストメソッド内で、テスト対象のクラスをインスタンス化して、 対象のメソッドを呼び、例えば対象のクラスのプロパティが期待する値になっているか?などをチェックする。という流れになります。
まずは Model をインスタンス化します。
var model = XF_ListViewSample.Models.Ramen.Instance;
model
の Initialize メソッドを呼び出すと Clear()
してデータを一個追加するようにしてあるので、Assert
クラスの AreEqual(object expected, object actual);
メソッドで期待値、実際の値を比較していきます。
//InitializeするとItem_1が追加されるので初期状態で1 model.Initialize(); // 1である Assert.AreEqual(1, model.Items.Count);
Assert クラスのメソッドには、
- Equals
- AreSame
- IsTrue
- IsNull
など色々な種類がありますので、これらを使用してチェックしていくことになります。
実行してみよう
Visual Studio のメニューから[テスト>実行>すべてのテスト]を実行してみましょう。
成功すると、[テストエクスプローラー]で成功が表示されます。やったね!!!
ViewModel をテストするには
もうお分かりだと思いますが、現在の状態では、ViewModel の ObservableCollection が直接 Model のプロパティを参照しているため、ViewModel のテストをしようと思うと、Model も一緒にインスタンス化する必要がありますね。当然テストできない訳ではありませんが、ViewModel 単体でテストしたいよなーと思いますよね。
そこで登場するのが、Prism for Xamarin.Forms などの DI(Dependency Injection)の機構を持ったフレームワークのようです。
私も早く勉強して使えるようになりたいな!ということで、後は識者の方々に解説はお譲りしたいなと思います。
DI とは?
Prism for Xamarin.Forms 入門書! @nuits_jp さんありがとう!見ながら勉強していきます。
Xamarin 気になった方は
是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソース や JXUG リンクページ に参考資料を纏めてますので併せてどうぞ。
Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)
Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。
私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)、Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。
以上です。