Windows 上のNUnit 2.4.6 GUI | |
| 原作者 | チャーリー・プール、ジェームズ・ニューカーク、アレクセイ・ヴォロンツォフ、マイケル・トゥー、フィリップ・クレイグ、ロブ・プラウズ、シモーヌ・ブソーリ、ニール・コルヴィン |
|---|---|
| 開発者 | NUnit プロジェクト、 .NET Foundation |
| 安定版リリース | 4.0.0 / 2023年11月26日 |
| リポジトリ | github.com/nunit |
| 書かれた | C# |
| オペレーティング·システム | .NET フレームワーク、モノ |
| タイプ | ユニットテストツール |
| ライセンス | 3.0 はMIT ライセンス、2.x は BSD スタイル (修正zlib ライセンス) |
| Webサイト | 詳しくはこちら |
NUnit は、 .NET FrameworkおよびMono 用のオープンソースの ユニット テスト フレームワークです。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 は、ユニット テストの実行時間を記録し、チャートと履歴追跡を含むXML、CSV、XHTMLパフォーマンス レポートを生成できるアドインです。その主な目的は、アジャイル手法で作業する開発者またはチームがパフォーマンス メトリックと分析をユニット テスト環境に統合し、アルゴリズムの複雑さとシステム リソースの負荷の観点からソフトウェア システムの進化を簡単に制御および監視できるようにすることです。[引用が必要]
NUnit.Forms は、コア NUnit フレームワークの拡張であり、オープンソースでもあります。特に、 Windows フォームのユーザー インターフェイス要素のテストを処理できるように NUnit を拡張することを目指しています。2013 年 1 月現在、Nunit.Forms はアルファ リリースであり、2006 年 5 月以降はバージョンがリリースされていません。[引用が必要]
NUnit.ASPは、コアNUnitフレームワークの廃止された[9]拡張であり、オープンソースです。特に、NUnitを拡張してASP.Netのユーザーインターフェイス要素のテストを処理できるようにすることを目的としています。[引用が必要]
参照
- テスト自動化
- .NET プログラミング言語のユニット テスト フレームワークのリスト(xUnit に基づくものを示す列を含む)
- 翻訳元
- ジュニット
参考文献
- ^ 「NUnit 3 テスト アダプター」。
- ^ 「並列化可能な属性」。GitHub。
- ^ 「TestCaseData」。GitHub。
- ^ Prouse, Rob (2015-11-04). 「NUnit 3 を使用した .NET Core のテスト」
- ^ Prouse, Rob (2015-03-25). 「Android および iOS 用の NUnit 3.0 テスト ランナー」。
- ^ 「Compact Framework 用の NUnit バージョン 3」。
- ^ 「SilverLight 5.0 用の NUnit バージョン 3」。
- ^ “CategoryAttribute”. GitHub . 2015年12月15日閲覧。
- ^ 「NUnit.ASP ウェブサイトのメイン ページ」。SourceForge。2008年 4 月 15 日閲覧。
文献
- Hunt, Andrew; Thomas, David (2007)。『NUnit による C# での実用的な単体テスト』第 2 版。The Pragmatic Bookshelf (Raleigh)、2007 年。ISBN 0-9776166-7-3。
- Newkirk, Jim; Vorontsov, Alexei (2004)。『Microsoft .NET でのテスト駆動開発』。Microsoft Press (Redmond)、2004 年。ISBN 0-7356-1948-4。
- ハミルトン、ビル (2004)。NUnitポケットリファレンス。オライリー(ケンブリッジ)、2004 年。ISBN 0-596-00739-6。
外部リンク
- 公式サイト
- GitHub サイト
- Launchpad サイト (メンテナンス終了)
- NUnit と Test-driven.NET を使用したテスト駆動開発のビデオ デモ
- NUnit.Forms ホームページ
- NUnitAsp ホームページ
- 記事「テスト駆動開発によるアプリケーション品質の向上」では、Nunitを使用した具体的な例とともにTDDを紹介しています。
- nunitテストを並列実行できるオープンソースツール
- チャーリー・プール、共同開発者
- 共同開発者、ロブ・プラウズ
- 共同開発者、シモーネ・ブソリ
