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

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

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

今回は、NUnitでの例外処理のテストコードについて説明します。

NUnitについては、前に説明したので、そちらを参照してください。

NUnitでは、簡単に例外処理のテストを行える。
今回は、簡単な例外のテストコードを作成した。

下記は、テスト対象のコード

using System;

namespace Sample.Test
{
///
/// テスト対象クラス
///

class Sample
{
public void CallException()
{
throw new SampleException("例外", 1000);
}
}

///
/// 自作の例外クラス
///

class SampleException : Exception
{
public int ErrCode { get; set; }

public SampleException(string massage, int code)
: base(massage)
{
this.ErrCode = code;
}
}
}


下記は、テストのプログラム
using System;
using NUnit.Freamwork;


namespace Sample.Test
{
///
/// テスト
///

[TestFixture]
public class TestCode
{

///
/// Assert.Throwを使用して例外テスト
/// NUnit2.5から追加された機能
/// 2.5以前とは違い、属性を付加しないでよい。
///

[Test]
public void Test()
{
ver ex = Assert.Throw( ()=>
{
Sample sample = new Sample();
sample.CallException();
});

Assert.AreEqual("例外", ex.Message);
Assert.AreEqual(1000, ex.ErrCode);
}

///
/// 従来の例外テスト
/// Messageの比較はできるが、複雑なことができない。
/// ErrCodeの比較が出来ないかも?(ErrCodeを比較するとTest_2)
///

[Test]
[ExpectedException(typeof(SampleException), ExpectedMessage="例外")]
public void Test_1()
{
Sample sample = new Sample();
sample.CallException();
}

///
/// 従来の例外テスト
///

[Test]
public void Test_2()
{
string message="";
int code=0;
try
{
Sample sample = new Sample();
sample.CallException();
}
catch(SampleException ex)
{
message = ex.Message;
code = ex.ErrCode;
}
Assert.AreEqual("例外", message );
Assert.AreEqual(1000, code );

}
}
}

従来の例外テストより簡単に例外のテストコードを作成出来るようになっているので
Assert.Throwを使用してテスト行ってみてほしい。

では、稲刈りで忙しいので、さようなら。
@some