【C#】【NUnit】 NUnit ~ あれこれ編 ~

■ 前処理 / 後処理

 * VSのUnitテストとは異なる

前処理

 * Setup()をオーバーライドする

後処理

 * TearDown()をオーバーライドする

■ 許容誤差を考慮する

対策

 * 以下のように第3引数で許容誤差を指定すればいい

Assert.AreEqual([期待する値], [テストする値], 【許容誤差】);
[[https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.visualstudio.testtools.unittesting.assert.areequal?view=mstest-net-1.2.0#Microsoft_VisualStudio_TestTools_UnitTesting_Assert_AreEqual_System_Double_System_Double_System_Double_]]

サンプル

 * 本来なら許容誤差などを考えなくてもいいのだが、
   丸め誤差により、期待する値(この例では「-0.15」)にならない。
   そこで、許容誤差(この例では「0.01」)を設ければテストをパスできる

[Test]
public void Test6()
{
    double ans = this.GetTemperature(273.0);
    Assert.AreEqual(-0.15, ans, 0.01);
}

private double GetTemperature(double kelvin)
{
    return kelvin - 273.15;
}

参考文献

http://d.hatena.ne.jp/nekozeoyaji/20100621/p1
http://d.hatena.ne.jp/nekozeoyaji/20100618/p1

■ 例外の試験を行う

対策

 * 以下のようにExpectedException属性(アトリビュート)を指定すればいい

[Test]
[ExpectedException(typeof(【例外の種類】)] // ←ExpectedException属性(アトリビュート)を指定
public void 【単体試験メソッド】()
{
  // 例外試験
}

サンプル

[Test]
[ExpectedException(typeof(System.IndexOutOfRangeException))]
public void Test7()
{
    double[] value = new double[2];
    value[3] = 12.7; // ★配列外にアクセスするため、例外★
}

関連記事

https://blogs.yahoo.co.jp/dk521123/18458247.html

単体テストをPending(一旦、試験対象外)しておきたい

対策

 * Ignore属性(アトリビュート)を指定すれば、指定した単体試験は、無視(Ignore)される

サンプル

[Test]
[Ignore] // ←Ignore属性(アトリビュート)を指定しておくと、この単体試験は試験対象外となる
public void Test8()
{
    Assert.IsFalse(true);
}

関連記事

NUnit ~ 初期設定編 ~

https://blogs.yahoo.co.jp/dk521123/21001377.html