すがブロ

sugamasaoのhatenablogだよ

ReSharper UnitRunを導入してみた(2)

UnitRun

前回(id:seiunsky:20061130:1164909243)の続き

その前に

そもそもNUnit自体触っていなかったのでNUnitでのプロジェクト作成手順をまとめてみる。

テストメソッドの作成

  1. テスト用プロジェクトをテスト対象ソリューションに追加
  2. テスト用プロジェクトにnunit.frameworkを追加(テスト用プロジェクト右クリック→参照の追加→.NETタブにある)
  3. テスト用プロジェクトにテスト対象プロジェクトの追加(テスト用プロジェクト右クリック→参照の追加→プロジェクトタブにある)
  4. テストコードを書く(テストメソッドを作成するには NUnit.Frameworkをusingする)

このような手順で行えばテストコードを書くことができる。
以下のコードは sum.cs の sumクラスをテストすると時のテストクラス

using System;
using System.Collections.Generic;
using System.Text;

using NUnit.Framework;
using calc;

namespace calcTest
{
	/// <summary>
	/// sum.csテスト用クラス
	/// </summary>
	[TestFixture]
	public class sumTest
	{
		sum s;

		/// <summary>
		/// テストクラスで最初の一回目に実行されるクラス。
		/// 必要なデータの初期化などをしておく。
		/// </summary>
		[TestFixtureSetUp]
		protected void sumInit()
		{
			s = new sum();
		}

		/// <summary>
		/// 実際のテストクラス
		/// </summary>
		[Test]
		public void sumTest1()
		{
			Assert.AreEqual(30, s.sumCalc(10, 20));
		}
	}
}

気をつけるのはテスト用クラスの先頭に[TestFixture]属性を着けるコトと、テストクラス自身も public な可視性になっている必要があるということ。

じゃあResharper UnitRunで実行してみよう

上記のようなテストメソッドを書いていると画面の行番号やブレークポイントの表示される場所あたりに、変なマークで出現することに気が付くと思う。
そのマークを左クリックし、Runを選択すれば Reshaper UnitRun の実行画面が表示されるはずだ*1。
で、Runを実行するとテストプログラムを流すだけだけど、ブレークポイントを仕掛けてからDebugで実行するとテストプログラムをステップ実行でトレースすることが出来る。
いや、それにしてもResharperのUIは良いね。
NUnitのデフォルトのヤツはちょっとダサいし、VS2005とは別のアプリになってしまうので使い勝手が悪い。それに(もうあまり覚えてないけど)TestDrivenは成功・失敗の色とかが出なくてすごいシンプルだった記憶がある。
それに比べると使い方も簡単で、見た目も良く、なおかつVS2005と連動してくれるこのツールはディ・モールト良いね!

追記:アプリケーションの実行でうまく行かない場合

スタートアッププロジェクトの設定が正しくない可能性がある。

  1. プロジェクトエクスプローラ上のメインのプロジェクト上で右クリック→スタートアッププロジェクトに設定を選択
  2. テスト用プロジェクトを右クリック→プロパティを選択
  3. 出力の種類をクラスライブラリに変更

これで大丈夫だと思う。

追記2:NUnitのマニュアル

Exceptionを吐くテストはどうやってやるのか? などの使い方については以下が参考になると思う。
http://www.objectclub.jp/community/XP-jp/xp_links/NUnitUsersGuidebookVer2.pdf

*1:またはソリューションエクスプローラのテスト用プロジェクトを右クリックしても良い