読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

MVVM な Xamarin.Forms プロジェクトの Model を UnitTest してみる - その2

Xamarin Xamarin.Forms

こんにちは。エクセルソフトの田淵です。

前回は Mvvm ライクなアプリを作成しました。

ytabuchi.hatenablog.com

今回は UnitTest をしてみたいと思います。

UnitTest プロジェクト作成

UnitTest をするには、Visual Studio でプロジェクトを追加し、「テスト>単体テストプロジェクト」を作成します。

f:id:ytabuchi:20160905181326p:plain:w450

作成された単体テストプロジェクトの「参照」を右クリックして、Xamarin.Forms のプロジェクトを追加します。

f:id:ytabuchi:20160905184400p:plain:w450

テストを書いてみよう

基本的な処理は、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 のメニューから[テスト>実行>すべてのテスト]を実行してみましょう。

f:id:ytabuchi:20160905185711p:plain:w450

成功すると、[テストエクスプローラー]で成功が表示されます。やったね!!!

f:id:ytabuchi:20160905185601p:plain:w300

ViewModel をテストするには

もうお分かりだと思いますが、現在の状態では、ViewModel の ObservableCollection が直接 Model のプロパティを参照しているため、ViewModel のテストをしようと思うと、Model も一緒にインスタンス化する必要がありますね。当然テストできない訳ではありませんが、ViewModel 単体でテストしたいよなーと思いますよね。

そこで登場するのが、Prism for Xamarin.Forms などの DI(Dependency Injection)の機構を持ったフレームワークのようです。

私も早く勉強して使えるようになりたいな!ということで、後は識者の方々に解説はお譲りしたいなと思います。

DI とは?

qiita.com

Prism for Xamarin.Forms 入門書! @nuits_jp さんありがとう!見ながら勉強していきます。

www.nuits.jp

Xamarin 気になった方は

是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

ytabuchi.hatenablog.com

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。