DUnitX の概要
アプリケーションのテスト:インデックス への移動
DUnitX は、NUnit テスト フレームワークに基づくオープンソースのユニット テスト フレームワークで、xUnit のアイデアも一部取り入れられています。 DUnitX フレームワークの RAD Studio インテグレーションにより、Delphi アプリケーションを、Win32、Win 64、macOS、Linux に対して開発しテストを実行することができます。
DUnitX テスト フレームワークには、さまざまな条件をテストするための一連のメソッドが独自に用意されています。用意されているメソッドを使用して、多数の条件をテストできます。これらのメソッドは一般的なアサーションを表していますが、独自のカスタム アサーションを作成することもできます。
DUnitX では、ジェネリックスと無名メソッドを利用しています。 DUnitX は、Delphi パーソナリティの属性を使用します。
DUnitX のホーム ページ(https://github.com/VSoftTechnologies/DUnitX/wiki)も参照してください。
Delphi 版 DUnitX テストの作成
次のサンプル Delphi プログラムでは、単純な加算および減算を実行する 2 つの関数を定義しています。
unit CalcUnit;
interface
type
{ TCalc }
TCalc = class
public
function Add(x, y: Integer): Integer;
function Sub(x, y: Integer): Integer;
end;
implementation
{ TCalc }
function TCalc.Add(x, y: Integer): Integer;
begin
Result := x + y;
end;
function TCalc.Sub(X, Y: Integer): Integer;
begin
Result := x - y;
end;
end.
次の例はテスト ユニットを示します。上記の 2 つの関数をテストするには、これを変更する必要があります。SetUp メソッドと TearDown メソッド、さらに、テスト メソッド TestAdd および TestSub にコードを追加する必要があります。最後に、属性を利用して関数をテストします。
unit TestCalcUnit;
interface
uses
DUnitX.TestFramework, CalcUnit;
type
[TestFixture]
TestTCalc = class(TObject)
strict private
aTCalc: TCalc;
public
[Setup]
procedure Setup;
[TearDown]
procedure TearDown;
// Sample Methods
// Test with TestCase Atribute to supply parameters.
[TestCase('TestA','8,2,10')]
procedure TestAdd(Value1, Value2, _Result: Integer);
// Test with TestCase Atribute to supply parameters.
[TestCase('TestB','3,4,-1')]
procedure TestSub(Value1, Value2, _Result: Integer);
end;
implementation
procedure TestTCalc.Setup;
begin
aTCalc := TCalc.Create;
end;
procedure TestTCalc.TearDown;
begin
aTCalc := nil;
end;
procedure TestTCalc.TestAdd(Value1, Value2, _Result: Integer);
var
R: Integer;
begin
R := aTCalc.Add(Value1, Value2);
Assert.AreEqual(R, _Result); // testcode
end;
procedure TestTCalc.TestSub(Value1, Value2, _Result: Integer);
var
R: Integer;
begin
R := aTCalc.Sub(Value1, Value2);
Assert.AreEqual(R, _Result); // testcode
end;
initialization
TDUnitX.RegisterTestFixture(TestTCalc);
end.
DUnitX の関数
DUnitX には、テストで使用できる多数の関数を備えた Assert クラスが用意されています。
これらの関数の一部を次の表に示します。
関数 | 説明 |
---|---|
Pass |
ルーチンが正常に機能することを確認します。 |
Fail |
ルーチンが正常に機能しないことを確認します。 |
AreEqual |
項目が等しいことを確認します。 |
AreNotEqual |
項目が等しくないことを確認します。 |
AreSame |
2 つの項目が同じ値であることを確認します。 |
AreNotSame |
2 つの項目が同じ値でないことを確認します。 |
Contains |
項目がリストに含まれていることを確認します。 |
DoesNotContain |
項目がリストに含まれていないことを確認します。 |
IsTrue |
条件が成立することを確認します。 |
IsFalse |
条件が成立しないことを確認します。 |
IsEmpty |
項目の値が空であることを確認します。 |
IsNotEmpty |
項目の値が空でないことを確認します。 |
IsNull |
項目が null であることを確認します。 |
IsNotNull |
項目が null でないことを確認します。 |
WillRaise |
メソッドで例外が発生するかどうかを確認します。 |
StartsWith |
文字列が指定の部分文字列で始まるかどうかを確認します。 |
InheritsFrom |
クラスが指定のクラスの下位クラスかどうかを確認します。 |
IsMatch |
項目が指定のパターンと一致するかどうかを確認します。 |
上記の関数をはじめとする DUnitX の関数の構文と使用法の詳細については、\source\DUnitX にある DUnitX のヘルプ ファイルを参照してください。
DUnitX テスト ランナー
テスト ランナーを使用すると、アプリケーションとは無関係にテストを実行できます。DUnitX テスト プロジェクトでは、DUnitX フレームワークから提供されるテスト ランナー コードが、生成される実行可能ファイルに直接コンパイルされるため、テスト プロジェクト自体がテスト ランナーになります。統合 DUnitX テスト フレームワークには、次の 2 つのテスト ランナーが用意されています。
- コンソール型テスト ランナー:
- すべてのテスト出力をコンソールに送ります。これは、DUnitX プロジェクト実行時のデフォルトのテスト モードです。DUnitX フレームワークには、テスト出力をコンソールに送る
TDUnitXConsoleLogger
クラスが用意されています。 - 完成したコードとテストを、自動化されたビルド スクリプトから実行する場合に役に立ちます。
- すべてのテスト出力をコンソールに送ります。これは、DUnitX プロジェクト実行時のデフォルトのテスト モードです。DUnitX フレームワークには、テスト出力をコンソールに送る
- GUI 型テスト ランナー:
- テスト結果を GUI ウィンドウにインタラクティブに表示します。DUnitX フレームワークには、FireMonkey GUI 用の出力を生成する
TGUIXTestRunner
クラスと VCL GUI 用のTDUnitXGuiLoggerForm
クラスが用意されています。 - テスト対象となっているコードのユニット テストを積極的に作成する場合に非常に役に立ちます。
- テスト結果を GUI ウィンドウにインタラクティブに表示します。DUnitX フレームワークには、FireMonkey GUI 用の出力を生成する