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 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
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