NUnitを使ってみるテスト
WindowsPhoneはおろか、今までxUnitは使用したことがありませんでしたが、
開発効率を上げるためにも自動テスト(ユニットテスト?)とやらを勉強しようと思い、
ひとまずWindowsPhoneでNUnitを使ってみました。
使い方
テスト対象の用意
まずは、適当にテスト対象のアプリを作ります。

で、適当にテスト対象のクラスを作ります。
public class Tax
{
/// <summary>
/// 消費税込の価格を返す
/// </summary>
/// <param name="price">税抜き価格</param>
/// <returns>税込み価格</returns>
public int AddExciseTax(int price)
{
return (int)(price * 1.05);
}
}
テストアプリを追加
次に、テスト用のアプリプロジェクトを追加します。

このプロジェクトに対して、NuGetでNUnitをインストールします。

・・・何をどうしていいか分からないので、まずはNUnit_Readme.txtを読んでみます。
Readmeによると、
UnitTest.cs と Test_Readme.txt はいらないから消していいよ。
例は NUnitTest.cs に書いてあるから。あと、MainPageのLoadedイベントのハンドラに
this.StartTestRunner(new Microsoft.Silverlight.Testing.UnitTesting.Metadata.NUnit.NUnitProvider());
って書いとけばおk
とのことなので、要らないファイルを消して、MainPageのLoadedに上記コードを記述します。
namespace TestApp
{
public partial class MainPage : PhoneApplicationPage
{
// コンストラクター
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
this.StartTestRunner(new Microsoft.Silverlight.Testing.UnitTesting.Metadata.NUnit.NUnitProvider());
}
}
}
次に、Tax.cs のテストをするために、TestAppプロジェクトの参照にTargetAppを追加します。

そんで、NUnitTest.csのテストコードを書き換えます。
namespace TestApp
{
[TestFixture]
public class NUnitTest
{
[Test]
public void TaxTestPass()
{
Assert.AreEqual(105, TargetApp.Tax.AddExciseTax(100));
}
[Test]
public void TaxTestFail()
{
Assert.AreEqual(100, TargetApp.Tax.AddExciseTax(100));
}
}
}
この例では、100円の税込み価格が105円になるかチェックするテスト(成功例)と、
価格が変わらないテスト(失敗例)を記述しています。


