■
さて、WindowsMobileの開発をするにあたって、WindowsMobileでNunitは使えません。
これじゃTDDできないじゃん。と思って、
(mobile版のNunitなんか無いよなぁ・・・と思って探してみたら)
なんと、ありました。
その名もmobileUnit(わりとそのまま。)
これがあれが、WindowsMobileの開発でもTDDができるっていうものですよ。
以下簡単に使用方法です。
1.MobileUnitの入手。
以下から、MobileUnitをダウンロードして来ます。
入手先
http://handheld.softpedia.com/get/Developer-Tools/mobileUnit-44043.shtml
(2007/9/19時点のバージョンは0.9)
2.解凍してプロジェクトから参照できるようにする。
ダウンロードしたmobileUnit0.9.0.zipを解凍する。
VisualStudioの「プロジェクト」−「参照の追加」から
解凍して出来たファイルのmobileUnit\bin\Debug(もしくはRelease)\mobileUnit.dllを参照に追加する。
ここまでで準備完了。
3.テストクラスでmobileUnitを使用する。
3−1 テストクラスではmobileUnit.org.TestCaseクラスを継承させる。
3−2.テストクラスに[mobileUnit.org.TestFixture]属性を付ける。
3−3.テストメソッドに[mobileUnit.org.Text]属性を付ける。
3−4.テストメソッド内ではNunitと同じようにAssert.AreEqual()などのテストメソッドを使用する。
ということを行います。
以下サンプル。
(※KzPlayerLib以下のパッケージは私がテストのために作成したクラスです)
using System; using System.Collections.Generic; using System.Text; using KzPlayerLib.domain.sound; using NMock; using mobileUnit.org; using mobileUnit.org.testframework; namespace KzPlayerLibTest.domain.sound { /// <summary> /// Mp3SoundManagerのテストクラス /// </summary> [mobileUnit.org.TestFixture] public class TestMp3SoundManager : mobileUnit.org.TestCase { [mobileUnit.org.Test] public void テストメソッド失敗するパターンその1() { Assert.AreEqual(1, 2); return; } [mobileUnit.org.Test] public void テストメソッド成功パターンその1() { Assert.AreEqual(1, 1); return; } public override void Setup() { // throw new Exception("The method or operation is not implemented."); } public override void Teardown() { // throw new Exception("The method or operation is not implemented."); } } }
以下が、実際の実行結果です。
おおっ。確かにテストできているようですね。
失敗したメソッドが赤、成功が緑で表示されています。
よし、これでMobile開発でもテスト駆動開発ができそうだ。
ちなみにNmock, 及びMock2を試したところ使用できませんでした。
Nmock,NMock2ではSystem.Reflection.Emit.ModuleBuilderクラスを使用しているようだが、
ModuleBuilderクラスはcompact framework2.0には存在していない。
というわけで、いまいまはWindowsMobileではNMockを使用できないようですね。残念。
compact framework3.5では使えるようになって欲しいなぁ。
追記:Nunitが提供するMockでも駄目でした。
こちらはSystem.Runtime.Remoting.Proxies.RealProxyクラスを使用しているようですが、
そのクラスが無いとのことでした。残念。
compact frameworkではMockはまだ使用できないようですね。