BT

モバイルデバイスの .NET/Mono ユニットテスト

| 作者: Jonathan Allen フォローする 530 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2012年2月21日. 推定読書時間: 4 分 |

原文(投稿日:2012/02/17)へのリンク

特殊なプラットフォームで今も問題となっているのが,ユニットテストのサポートの欠如である。どのような方法を選択しても,開発者はテストあるいはビルドプロセスの品質に関する妥協を余儀なくされる。最近になって MonoTouch がこの分野で進歩を遂げたが,Windows Phone と Mono for Android はいまだ遅れを取っている。

Windows Phone 7 / Silverlight

Windows Phone 7 には,開発者が利用可能な2つのテストルートがある。ひとつは Silverlight ユニットテストフレームワークをハックして,Windows Phone デバイス上で動作させるというものだ。Silverlight 開発者の多くはすでに,このようなやり方には馴染んでいる。ユニットテストフレームワーク自体が "試験的 (experimental)" と公表されていて,少なからぬ数のテストのサポートに手を加える必要があるからだ。Jeff Wilcox 氏は Silverlight 3 と Windows Phone 7.0 でユニットテスト を行うための,そのような修正版のひとつを提供している。

良い点: 他の選択肢に比較して,より正確なテストの実施が可能。
悪い点: ビルドプロセスに含めることができない。IDE サポートがない。

Christofer Löf 氏は,まったく違う方法を選択した。まともなテストフレームワークを Windows Phone に押し込もうとするのではなく,テストしたいコードをそこから引っ張り出すことにしたのだ。氏は Portable Library Tools を使って独自のモデルとビューモデルを実装することにより,標準的なユニットテストフレームワークとデバイス上の両方で,同じコードの実行を実現した。ただし残念なことに Portable Library は,"ListFactory" を使用時に適切なタイプを提供するために必要な observable collection (更新時に通知を行うコレクションクラス) をサポートしていない。

良い点: ビルドサイクルの一部として組込可能。 任意の標準的ユニットテストフレームワークに対応。IDE 統合。
悪い点: Portable Library Tools で利用可能な API が限られている。

第3の方法は,同じソースコードを共有する別プロジェクトを使用することだ。コードが完全に同一であれば理想だが,ほとんどの差異には,プリプロセッサディレクティブを使用して対処することができる。独立したビルドの必要な MonoTouch と Mono for Android ですでにコードを共有しているか,あるいはそれを計画しているのならば,このアプローチがもっとも理にかなっている。

良い点: ビルドサイクルの一部として組込可能。 任意の標準的ユニットテストフレームワークに対応。IDE 統合。
悪い点: ビルド処理時間の増加。プラットフォーム間の相違による問題の可能性。

iOS / MonoTouch

MonoTouch には最近になって,オンデバイスのユニットテストフレームワークが追加された。Windows Phone バージョンとは違い,こちらには公式なサポートがある。この Touch.Unit フレームワークの本質は,MonoDevelop 用に基本的な IDE サポートをいくつか備えたテストランナである。その中心をなすのは,デバイスの限られたリソースで動作するように修正された NUnit フレームワークのサブセットである NUnitLite だ。

良い点: 他の選択肢に比較して,より正確なテストの実施が可能。
悪い点: ビルドプロセスに含めることができない。IDE サポートがない。

Touch.Unit がリリースされるまで,開発者は Windows Phone の場合と同じように,ソースコードを共有する別プロジェクトを使用していた。ただしこの場合には当然,Microsoft のランタイムに代えて,Mono のフルセットランタイムと NUnit がターゲットになる。

良い点: ビルドサイクルの一部として組込可能。 IDE 統合。
悪い点: ビルド処理時間の増加。プラットフォーム間の相違による問題の可能性。

Android / Mono for Android

現在のところ,Mono for Android プロジェクト用ユニットテストの唯一の選択肢は,複数のプロジェクトを使用する方法だ。Mono for Android は MonoTouch ほど製品として成熟していないが,将来的には同等のテストフレームワークが用意されることになるだろう。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT