xUnit Delphi DUnit Windows

クイックスタート | Quick Start

DUnit がどんなものなのか、ここで少し体験してみます。
新しいプロジェクトを作成して、 1 + 1 = 2 となることを確かめるサンプルです。
※Delphi 7 を使って作業をしてます。

プロジェクトの作成

まず、Delphi を起動します。
これで、勝手に新しいプロジェクトができます。
まず、

いらないファイルを取り除く

Delphi を起動したときにいくつかのファイル(まだ保存されていない)が 勝手に作成されます。この中のいらないファイルを取り除きます。

まず画面に出てきている Form1 を消します。
img:Form1
[×]ボタンを押してしまいます。

Unit1.pas という Form1 の実体もいらないので右上の [×] ボタンを押して消します。
img:Unit1
[Unit1.pas を保存しますか?] と聞いてきますが、もちろん保存しません。[いいえ]です。

ここまできたら一旦プロジェクトを保存します。
[ファイル] - [すべて保存] を選びます。
img:File-SaveAll
プロジェクト名に Project1Test.dpr というような名前を付けて保存します。

DUnit のファイルをプロジェクトに追加

[プロジェクト] - [ソース表示] を選びます。
img:Project-Source

出てきたウィンドウに DUnit のファイルを追加します。
img:Project1Test-Window
エクスプローラで dunit-7.2.0\src (ここでは C:\Tools\dunit-7.2.0\src) を開き、
TestFramework.pas と、GUITestRunner.pas
Project1Test.dpr ウィンドウにドラッグアンドドロップします。
img:Project-Source

これで、DUnit のファイルは追加できました。

TestCase を追加

[ファイル] - [新規作成] - [ユニット] を選びます。
すると Unit1 が追加されています。
Unit1 の初期状態
unit Unit1;

interface

implementation

end.

これを以下のように変更します。
Unit1 の変更後
unit Project1TestCases;
interface
uses
 TestFrameWork;

type
 TTestCaseFirst = class(TTestCase)
 published
   procedure TestFirst;
 end;

implementation

procedure TTestCaseFirst.TestFirst;
begin
 Check(1 + 1 = 1, 'Oops!');
end;

initialization
 TestFramework.RegisterTest(TTestCaseFirst.Suite);
end.

※わざと1 + 1 = 1 というようにして、必ずテストが失敗するようにしてあります。

Unit1 を Project1TestCases.pas という名前で保存します。

Project1Test.dpr を編集

初期状態で以下のようになっている Project1Test.dpr を、
Project1Test.dpr の変更前
program Project1Test;

uses
  Forms,
  Project1TestCase in 'Project1TestCase.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.Run;
end.

以下のように変更します。
Project1Test.dpr の変更後
program Project1Test;
uses
 Forms,
 TestFrameWork,
 GUITestRunner,
 Project1TestCases in 'Project1TestCases.pas';

{$R *.RES}

begin
 Application.Initialize;
 GUITestRunner.RunRegisteredTests;
end.

テストを失敗させる

ここまでで、テストが実行できるようになっています。
[実行] - [実行] を選択して、実行してみてください。

DUnit の ダイアログが表示されるはずです。
img:DUnit-Dialog-Default
実行ボタン([Actions] - [Run] またはF9)を押すと、テストが実行されます。

1 + 1 の答えは 1 にはなりませんので、テストは失敗します。
img:DUnit-Dialog-Fail

この、テストが失敗することを確認するのは、すごく大事です。
テストがちゃんと実行されていることを確認することができるからです。

テストを成功させる

今度は、1 + 1 の答えが 2 になるかをテストします。
Project1TestCases.pas の
Check(1 + 1 = 1, 'Oops!');
Check(1 + 1 = 2, 'Catastrophic arithmetic failure!'); に変更します。

これは、問題なくパスするはずです。
img:DUnit-Dialog-Fail

これが、DUnit の基本的な動きです。

つづく…。