2012/05/01

Visual C# 2010 Express に NUnit を使用する

ダウンロードとインストール

NUnit - Download から msi をダウンロード(現時点で最新は NUnit-2.6.0.12051.msi)。
インストールはおなじみ、ダブルクリックしてぽちぽちぽちっと

Visual Studio に登録

[ツール]→外部ツールメニューにて下記のデータでエントリを追加。
  • タイトル : NUnit
  • コマンド : C:\Program Files\NUnit 2.6\bin\nunit.exe
  • 引数 : /run $(ProjectDir)/$(ProjectFileName)
  • 初期ディレクトリ : $(ProjectDir)
これで、ツールメニューに外部ツールとして NUnit が登録される。

Debug ビルドを可能に

デフォルトだと強制的に Release ビルドになるので、Release と Debug を選択できるようにする。
  1. [ツール]→[設定]にて基本設定から上級者設定に変更。これでソリューション構成選択などのメニューが上部に現れる。
  2. [ツール]→[オプション]のダイアログにて、左下の「すべての設定を表示」にチェック
  3. [プロジェクトおよびソリューション]→[全般]メニューにて「ビルド構成の詳細を表示」にチェック
これで、選択した構成でのビルドが可能になる。

試してみる

サンプルプロジェクト(NUnitSample) を作成、Class1 を Sample クラスに変更して、SampleMethod メソッドを登録。
using System;

namespace NUnitSample
{
    public class Sample
    {
        public int SampleMethod(string text)
        {
            return 0;
        }
    }
}
テスト用プロジェクト(NUnitSampleTest)を追加し、参照設定にプロジェクトから NUnitSample プロジェクトを、.NET から nunit.framework を追加。 テストクラス SampleTest を作成し、テストメソッドを追加。
using System;

using NUnit.Framework;
using NUnitSample;

namespace NUnitSampleTest
{
    public class SampleTest
    {
        private Sample sample = new Sample();

        [Test(Description="引数 null 時のSampleMethodテスト")]
        [ExpectedException(typeof(ArgumentNullException))]
        public void SampleMethodWithNullArgument()
        {
            this.sample.SampleMethod(null);
        }

        [Test(Description="数値でない引数のテスト")]
        [ExpectedException(typeof(ArgumentException))]
        public void SampleMethodWithInvalidArgument()
        {
            this.sample.SampleMethod("hoge");
        }

        [Test(Description="正常な引数時のテスト")]
        public void SamplemethodWithValidArgument()
        {
            int expected = 1234;
            int actual = this.sample.SampleMethod("1234");
            Assert.AreEqual(expected, actual);
        }
    }
}
[外部ツール]→[NUnit]で実行する。
当然失敗する。
ソースコードを修正する。
using System;

namespace NUnitSample
{
    public class Sample
    {
        public int SampleMethod(string text)
        {
            if (text == null)
            {
                throw new ArgumentNullException("text");
            }
            int result = 0;
            if (Int32.TryParse(text, out result))
            {
                return result;
            }
            else
            {
                throw new ArgumentException("text");
            }
        }
    }
}
実行して成功するのを確認する。

1 件のコメント :

  1. kurukuru-papa2012/09/01 11:21:00

    参考にさせて頂き、お陰様でNUnitを実行できるようになりました。ありがとうございます。

    ビルド時の「ソリューションプラットフォーム」を「Any CPU」→「x86」に変更すると、NUnit起動時に、テストケースのDLLが見つからないためエラーとなりました。

    [ツール]→外部ツールメニューで次のようにすると正常に起動できるようです。

    引数 : /run /run $(TargetName)$(TargetExt)
    初期ディレクトリ : $(BinDir)

    既にご認識されていることかもしれませんが、念のためコメントさせて頂きました。

    返信削除