サイトマップ 連絡先 トップに戻る 最初に戻る 前に戻る 次に進む
$Date: 2018-07-07 06:49:13 +0900 (2018/07/07 (土)) $
$Revision: 1347 $

NUnit3 の使い方

プロジェクトの作成

  1. Visual Studio 2015 を開く
  2. ファイル → 新規作成 → プロジェクト を選ぶ
  3. クラスライブラリを選び、プロジェクト名を入力して、OK を押す

NUnit を NuGet でプロジェクトに追加する

  1. ツール → NuGet パッケージマネージャ → ソリューションの NuGet パッケージの管理 を選ぶ
  2. 参照を選んで、エディットボックスに NUnit と入力する
  3. NUnit を選択して、追加したいプロジェクトにチェックをつけてインストールを選ぶ
  4. 確認ダイアログが出るので OK を押す
  5. NUnit.Console を選択して、プロジェクトにチェックをつけてインストールを選ぶ
  6. 確認ダイアログが出るので OK を押す
  7. NUnit3.TestAdaptor を選択して、プロジェクトにチェックをつけてインストールを選ぶ
  8. 確認ダイアログが出るので OK を押す

テスト対象のクラスを追加する

  1. プロジェクトを選択して右クリックして追加 → 新しい項目を選ぶ
  2. クラスを選んでファイル名を入力して OK を押す
テスト対象のクラス
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NUnitTestTest
{
    class Calc
    {
        public int Add(int a, int b)
        {
            return a + b;
        }

        public int Devide(int a, int b)
        {
            return a / b;
        }
    }
}

テストクラスを作成する

先頭に using 指定する。これによってコード補完が効きます。
using NUnit.Framework;
以下がテストクラスです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;

namespace NUnitTestTest
{
    [TestFixture]
    public class Test
    {
        private Calc calc;

        [SetUp]
        public void SetUp()
        {
            this.calc = new Calc();
        }

        [TearDown]
        public void TearDown()
        {
            this.calc = null;
        }


        [Test]
        public void TestAdd()
        {
            Assert.That(this.calc.Add(1, 2), Is.EqualTo(3));
        }

        [Test]
        public void TestDevide()
        {
            Assert.That(this.calc.Devide(2, 1), Is.EqualTo(2));
        }

        [Test]
        public void TestDevideByZero()
        {
            Assert.That(() => { this.calc.Devide(2, 0); }, Throws.TypeOf<DivideByZeroException>());
        }
    }
}

属性

属性名名 説明 一次情報へのリンク (英語です)
[TestFixture] クラスにテストクラスの印をつけます TestFixture Attribute
[SetUp] テスト前のセットアップを行うメソッドの印をつけます。
通常はメソッド名はSetUp() という名前にします。(名前に制約はないです)
SetUp Attribute
[TearDown] テスト後の終了処理を行うメソッドの印をつけます。
通常はメソッド名はTearDown() という名前にします。(名前に制約はないです)
TearDown Attribute
[Test] 実際のテストをするメソッドの印をつけます。
メソッド名はなんでも構いません。。
Test Attribute

すべての属性を確認したい場合は以下を参照
Attributes

Assertion

Assert.That は特定の条件が成立するか確認して、成立しなければテストを失敗させる単体テストの核となる処理です。
Assert.That に関しては Assertions (英語)Constraint Model (英語) で説明されています。

Assert.That(this.calc.Add(1, 2), Is.EqualTo(3)); は Calc.Add(1, 2) の戻り値が 3 であることを確認しています。

Throws.TypeOf は例外が発生することを期待する制約条件です。
以下で説明されています。
ThrowsConstraint (英語)

Assert.That(() => { this.calc.Devide(2, 0); }, Throws.TypeOf<DivideByZeroException>()); では
Calc.Devide(2, 0) が DivideByZeroException という例外を発生することを確認します。

例外を発生しない場合の制約条件は
Assert.That(() => { this.calc.Devide(2, 0); }, Throws.Nothing);
とします。もちろんこの場合はテストは失敗します。
以下で説明されています。
ThrowsNothingConstraint (英語)

コマンドラインからテストを実行します

C:\gitwork\NUnitTestTest\packages\NUnit.ConsoleRunner.3.6.0\tools>nunit3-console.exe "C:\gitwork\NUnitTestTest\NUnitTestTest\bin\Debug\NUnitTestTest.dll"
NUnit Console Runner 3.6.0
Copyright (C) 2017 Charlie Poole

Runtime Environment
   OS Version: Microsoft Windows NT 10.0.14393.0
  CLR Version: 4.0.30319.42000

Test Files
    C:\gitwork\NUnitTestTest\NUnitTestTest\bin\Debug\NUnitTestTest.dll


Run Settings
    DisposeRunners: True
    WorkDirectory: C:\gitwork\NUnitTestTest\packages\NUnit.ConsoleRunner.3.6.0\tools
    ImageRuntimeVersion: 4.0.30319
    ImageTargetFrameworkName: .NETFramework,Version=v4.5.2
    ImageRequiresX86: False
    ImageRequiresDefaultAppDomainAssemblyResolver: False
    NumberOfTestWorkers: 4

Test Run Summary
  Overall result: Passed
  Test Count: 1, Passed: 1, Failed: 0, Warnings: 0, Inconclusive: 0, Skipped: 0
  Start time: 2017-02-26 04:54:08Z
    End time: 2017-02-26 04:54:09Z
    Duration: 1.453 seconds

Results (nunit3) saved as TestResult.xml

Visual Studio から実行します

  1. テスト → 実行 → すべてのテスト を選ぶ
  2. テストエクスプローラが開きテスト結果が表示される

作ったテストをデバッグする方法

NUnit3 の単体テストのデバッグを参照してください。

NUnit の更新

この記事を最初に書いたとき、NUnit のバージョンは 3.6 でしたが、
2017/09/02 現在ではnuget で取得できる 安定版は 3.8.1 になっています。
2017/12/10 現在ではnuget で取得できる 安定版は 3.9.0 になっています。
  1. ツール → NuGet パッケージマネージャ → ソリューションの NuGet パッケージの管理 を選ぶ
  2. 更新プログラムを選んで、すべてのパッケージの選択にチェックを入れて、更新を選ぶ
  3. 確認ダイアログが出るので OK を押す

テスト、テスト対象クラス、プロジェクト

https://github.com/m-tmatma/NUnitTest
テスト、テスト対象クラス、プロジェクトを GitHub に登録しています。