NUnit

NUnit
原作者チャーリー・プール、ジェームズ・ニューカーク、アレクセイ・ヴォロンツォフ、マイケル・トゥー、フィリップ・クレイグ、ロブ・プラウス、シモーネ・ブソーリ、ニール・コルヴィン
開発者NUnit プロジェクト、.NET Foundation
安定版リリース
4.4.0 / 2025年8月10日 (2025-08-10)
リポジトリgithub.com / nunit
書かれたC#
オペレーティング·システム.NET.NET FrameworkMono
タイプユニットテストツール
ライセンス3.0 はMIT ライセンス、 2.x はBSD スタイル(修正zlib ライセンス)
Webサイトwww.nunit.org

NUnitは、 .NET.NET FrameworkMono用オープンソースのユニットテストフレームワークです。Java世界におけるJUnitと同じ目的を果たし、xUnitファミリーの1つです。

特徴

  • テストは、コンソール ランナーから実行することも、Visual Studio 内のテスト アダプター[ 1 ]を介して実行することも、サードパーティのランナーを介して実行することもできます。
  • テストは並列に実行することができます。[ 2 ]
  • データ駆動型テストを強力にサポートします。[ 3 ]
  • .NET Core[ 4 ] Xamarin Mobile[ 5 ] Compact Framework [ 6 ] Silverlight [ 7 ]など複数のプラットフォームをサポートしています
  • すべてのテストケースは、選択的に実行できるように1つ以上のカテゴリに追加できます。[ 8 ]

NUnitは、テストのバッチ実行に使用されるコンソールランナー(nunit3-console.exe)を提供します。コンソールランナーはNUnitテストエンジンを介して動作し、テストの読み込み、探索、実行機能を提供します。テストを別のプロセスで実行する場合、エンジンはnunit-agentプログラムを使用してテストを実行します。

NUnitLite ランナーは、よりシンプルなランナーの方が適している状況で使用できます。これにより、開発者は自己実行型テストを作成できます。

アサーション

NUnitは、クラスの静的メソッドとして豊富なアサーションAssertセットを提供しています。アサーションが失敗した場合、メソッド呼び出しは返されず、エラーが報告されます。テストに複数のアサーションが含まれている場合、失敗したアサーションに続くアサーションは実行されません。そのため、通常はテストごとに1つのアサーションを使用するのが最適です。

Nunit 3.x は複数のアサーションをサポートしています。

[テスト] public void ComplexNumberTest () { ComplexNumber result = SomeCalculation ();Assert.Multiple (() = > { Assert.AreEqual ( 5.2 , result.RealPart , "" ) ; Assert.AreEqual ( 3.9 , result.ImaginaryPart , "" ) ; }) ; }

クラシック

NUnit 2.4より前は、Assertそれぞれのアサーションごとにクラスの個別のメソッドが使用されていました。これは多くのユーザーに好まれているため、NUnitでも引き続きサポートされています。

各アサートメソッドは、メッセージなし、単純なテキストメッセージ付き、またはメッセージと引数付きで呼び出されます。最後のケースでは、メッセージは指定されたテキストと引数に基づいてフォーマットされます。

// 等価性アサートAssert.AreEqual ( object expected , object actual ) ; Assert.AreEqual ( object expected , object actual , string message , params object [ ] parms ) ;Assert.AreNotEqual (オブジェクト期待値オブジェクト実際値); Assert.AreNotEqual (オブジェクト期待値オブジェクト実際文字メッセージパラメータオブジェクト[ ]パラメータ) ;// 同一性アサートAssert.AreSame ( object expected , object actual ) ; Assert.AreSame ( object expected , object actual , string message , params object [ ] parms ) ;Assert.AreNotSame (オブジェクト期待値オブジェクト実際値); Assert.AreNotSame (オブジェクト期待値オブジェクト実際文字メッセージパラメータオブジェクト[ ]パラメータ) ;// 条件アサート// (簡潔にするために、メッセージ シグネチャを持つメソッドは省略されています。) Assert . IsTrue ( bool condition ); Assert . IsFalse ( bool condition );Assert . IsNull (オブジェクトanObject ); Assert . IsNotNull (オブジェクトanObject );アサートします。IsNaN ( double aDouble ) Assert.IsEmpty (文字aString ) ; Assert.IsNotEmpty (文字aString ) ;Assert.IsEmpty ( ICollectionコレクション) ; Assert.IsNotEmpty ( ICollectionコレクション) ;

制約ベース

NUnit 2.4以降、新しい制約ベースモデルが導入されました。このアプローチでは、Assertすべてのアサーションに対してクラスの単一のメソッドを使用し、Constraint実行するテストを指定するオブジェクトを渡します。この制約ベースモデルは現在、NUnitの内部ですべてのアサーションに使用されています。従来のアプローチのメソッドは、この新しいモデルに基づいて再実装されています。

NUnitテストフィクスチャの例:

NUnit.Frameworkを使用します[TestFixture] public class ExampleTestOfNUnit { [Test] public void TestMultiplication () { Assert . AreEqual ( 4 , 2 * 2 , "Multiplication" ); // 同様に、バージョン 2.4 以降の NUnit では、制約オブジェクトに基づく新しい、より直感的なアサーション構文が提供されています// [http://www.nunit.org/index.php?p=constraintModel&r=2.4.7]: Assert . That ( 2 * 2 , Is . EqualTo ( 4 ), "Multiplication 制約ベース" ); } }// 次の例は、同じ例外テストを記述するさまざまな方法を示しています。[TestFixture] public class AssertThrowsTests { [ Test] public void Tests () { // .NET 1.x Assert.Throws ( typeof ( ArgumentException ) , new TestDelegate ( MethodThatThrows )); // .NET 2.0 Assert.Throws < ArgumentException > ( MethodThatThrows ); Assert.Throws < ArgumentException > ( delegate { throw new ArgumentException ( ) ; } ) ;// C# 3.0 の Assert . Throws < ArgumentException > ( () => { throw new ArgumentException (); }); } void MethodThatThrows () { throw new ArgumentException (); } }// この例では、戻り値を使用して例外の追加検証を実行します。[ TestFixture] public class UsingReturnValue { [ Test ] public void TestException () { MyException ex = Assert.Throws < MyException > ( delegate { throw new MyException ( " message " , 42 ) ; } ) ; Assert.That ( ex.Message , Is.EqualTo ( " message " ) ) ; Assert.That ( ex.MyParam , Is.EqualTo ( 42 ) ) ; } }// この例では、制約を含むオーバーロードを使用して同じことを行います。[TestFixture] public class UsingConstraint { [Test] public void TestException () { Assert . Throws ( Is . Typeof < MyException > () . And . Message . EqualTo ( "message" ) . And . Property ( "MyParam" ). EqualTo ( 42 )、delegate { throw new MyException ( "message" , 42 ); }); } }

NUnit フレームワークは、リフレクションExampleTestOfNUnit.TestMultiplication()によってメソッドを自動的に検出します。

拡張機能

FireBenchmarksは、ユニットテストの実行時間を記録し、チャートと履歴追跡機能を備えたXMLCSVXHTML形式のパフォーマンスレポートを生成できるアドインです。主な目的は、アジャイル手法を採用する開発者やチームが、パフォーマンス指標と分析をユニットテスト環境に統合し、アルゴリズムの複雑さやシステムリソースの負荷の観点からソフトウェアシステムの進化を容易に制御・監視できるようにすることです。

NUnit.Formsは、NUnitコアフレームワークの拡張版であり、オープンソースです。特に、 Windowsフォームのユーザーインターフェース要素のテストを処理できるようにNUnitを拡張することに重点を置いています。2013年1月現在、NUnit.Formsはアルファ版であり、2006年5月以降はバージョンがリリースされていません。

NUnit.ASPは、コアNUnitフレームワークの拡張版であり、現在は廃止されています[ 9 ]。オープンソースです。NUnitを拡張し、ASP.NETのユーザーインターフェース要素のテストを処理できるようにすることに特化しています。

参照

参考文献

参考文献

  • ハント、アンドリュー、トーマス、デイヴィッド(2007年)『NUnitによるC#実践的ユニットテスト』第2版、 The Pragmatic Bookshelf(ローリー)、2007年。ISBN 0-9776166-7-3
  • ニューカーク、ジム、ヴォロンツォフ、アレクセイ (2004). 『Microsoft .NETにおけるテスト駆動開発』 Microsoft Press (Redmond), 2004. ISBN 0-7356-1948-4
  • ハミルトン、ビル (2004). NUnit ポケットリファレンス. O'Reilly (ケンブリッジ), 2004. ISBN 0-596-00739-6