NUnit | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

●NUnitとは?
.Netプログラムの単体テスト(ユニットテスト)を行うためのフレームワークである。
これらのフレームワークでは、関数やクラスなど、ソフトウェアの様々な要素(ユニット)をテストすることができる。

NUnitの他にもC,C++,Javaなどの単体テストを行う下記がある。
CUnit (C言語用)
CppUnit(C++用)
JUnit (Java用)

その他にも
VBUnit (Visual Basic用)
DUnit (Delphi用)
PBUnit (PowerBuilder用)
PerlUnit(Perl用)
PyUnit (Python用)
RubyUnit(Ruby用)
tclUnit (Tcl/Tk用)
HUnit (Haskell用)
OUnit (Objective Caml用)
PHPUnit (PHP用)
などがあるので必要に応じてつかってみてみよう。

●NUnitの利点
テストを自動実行できる。。
同じテストを何度も書かずに済む。
個々のテストの結果がどうあるべきかを覚えておかなくても良い。
テスト結果がXMLで出力される。

●NUnitで使える属性
テストクラス・メソッドに付加する属性には下記のものがある。

[TestFixture]・・・テストコードを記載するクラスであることを示す
[Test]・・・テストメソッドであることを示す
[ExpectedException]・・・例外が発生することを示す
[SetUp]/ [TearDown]・・・テストメソッド毎に毎回その前と後のタイミングで呼ばれる。
[TestFixtureSetUp]・・・テストが実行される前に、1度だけ実行される
[TestFixtureTearDown]・・・テストが実行された後に、1度だけ実行される
[Category]・・・カテゴリ分けとカテゴリごとのテスト実行
[Explicit]・・・ツール上で明示しない限りテストされたくないメソッドにつける。

●アサーションのメソッド
テスト結果を確認するためのメソッドには下記のものがある。

比較系(AreEqual,AreSame系)
AreEqualメソッド・・・値が同じかどうか
AreSameメソッド・・・オブジェクト自体が同じかどうか
IsNullメソッド・・・Null であるかどうか。
IsNotNullメソッド・・・ Null ではないこと。

条件テスト系(IsTrue系)
IsTrueメソッド・・・Tueであるかどうか
IsFalseメソッド・・・False であるかどうか。

ユーティリティ系(Fail)
Fail・・・テストを失敗させる。

上記以外にも、メソッドが存在すうので必要に応じてつかってみよう。

●NUnitの設定
NUnitのダウンロード。(http://www.nunit.org/)
NUnitのインストール。
プロジェクトの参照にnunit.framework(nunit.framework.dll)を追加。
プロジェクトからテストを行うプロジェクトを参照するように設定。

●NUnitの使い方
下記はParkクラスを作成し、ParkMethod()の戻り値を確認しているテストである。
テストに失敗すると「テストに失敗・・・」を表示する。

----------テストを行うクラス------------

using System;
namespace Park
{
public class ParkClass
{
public sting ParkMethod()
{
return "Park";
}
}
}


-------------NUnitのテストコード-------------


using System;
using NUnit.Framework;
using Park//テストをしたいクラスのnamespaceを記載

namespace Sample
{
[TestFixture]
public class SampleClass
{
[SetUp]
public void Start()
{
// SampleMethod()の実行前に行う処理
}

[TearDown]
public void End()
{
// SampleMethod()の実行後に行う処理

}

[Test]
public void SampleMethod()
{
    //テスト
ParkClass park = new ParkClass();
    // 値が同じかどうかを確認して、失敗時に「テストに失敗・・・」を表示
Assertion.AssertEquals("Park",park .ParkMethod(),"テストに失敗・・・");
  }
}

}

@some