※昔の記事を復活(※2004/03/29頃の話を復活させた)
クイックスタート
DUnit がどんなものなのか、ここで少し体験してみます。
新しいプロジェクトを作成して、 1 + 1 = 2 となることを確かめるサンプルです。
※Delphi 7 を使って作業をしてます。
プロジェクトの作成
まず、Delphi を起動します。勝手に新しいプロジェクトができます。
いらないファイルを取り除く
Delphi を起動したときにいくつかのファイルが勝手に作成されます。この中のいらないファイルを取り除きます。
まず画面に出てきている Form1 を[×]ボタンを押して消します。
img/2-01-form1.png

Unit1.pas という Form1 の実体もいらないので右上の [×] ボタンを押して消します。
img/2-02-unit1.png

[Unit1.pas を保存しますか?] と聞いてきますが、もちろん保存しません。[いいえ]です。
ここまできたら一旦プロジェクトを保存します。[ファイル] – [すべて保存] を選びます。
img/2-03-file_all.png

プロジェクト名に Project1Test.dpr というような名前を付けて保存します。
DUnit のファイルをプロジェクトに追加
[プロジェクト] – [ソース表示] を選びます。
img/2-04-prj_src.png

出てきたウィンドウに DUnit のファイルを追加します。
img/2-05-prj_dpr.png

エクスプローラで dunit-7.2.0\src (ここでは C:\Tools\dunit-7.2.0\src) を開き、
TestFramework.pas と、GUITestRunner.pas をProject1Test.dpr ウィンドウにドラッグアンドドロップします。
img/2-06-prg_dpr_add.png

これで、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/2-08-dunit_dlg_def.png

実行ボタン([Actions] – [Run] またはF9)を押すと、テストが実行されます。
1 + 1 の答えは 1 にはなりませんので、テストは失敗します。
img/2-09_dunit_dlg_fail.png

この、テストが失敗することを確認するのは、すごく大事です。
テストがちゃんと実行されていることを確認することができるからです。
テストを成功させる
今度は、1 + 1 の答えが 2 になるかをテストします。
Project1TestCases.pas のを以下のように変更します。
変更前:
Check(1 + 1 = 1, 'Oops!');
変更後:
Check(1 + 1 = 2, 'Catastrophic arithmetic failure!');
これは、問題なくパスするはずです。
img/2-10_dunit_dlg_pass.png

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