記事カテゴリ

ユーザー機能


 2024年5月28日(火) 20:34 JST

[Delphi] DUnit を使ってみる

  • 投稿者:
  • 表示回数
    8,658

テストの効率化をねらって、DUnit を試してみたので、DUnit テストプロジェクト作成の手順をまとめてみた。

  1. DUnit をダウンロードする。
    http://dunit.sourceforge.net/
  2. テストプロジェクトを作成する。
    ファイル|新規作成|アプリケーション
  3. フォームを削除する。
  4. ユニットを追加する。:ファイル|新規作成|ユニット
  5. 下記のようにプロジェクトソースを編集する
    1. uses 節に以下の 2 ユニットを追加する。
      TestFramework, GUITestRunner
      
    2. 以下の 3 行を削除する
      Application.Initialize;
      Application.CreateForm(TForm2, Form2);
      Application.Run;
      
    3. 以下の行を追加する
      GUITestRunner.runRegisteredTests;
      
    4. 編集後、下記のようになる。
      program UnitTest;
      
      uses
        Forms,
        TestFramework,
        GUITestRunner,
        UUnitTest1 in 'UUnitTest1.pas';
      
      {$R *.res}
      
      begin
      	GUITestRunner.runRegisteredTests
      //	Application.Initialize;
      //	Application.CreateForm(TForm1, Form1);
      //	Application.Run;
      end.
      
  6. 下記のようにテストユニットを作成する
    unit UUnitTest1;
    
    interface
    
    uses
    	TestFramework, GUITestRunner;
    
    type
    	TTestUnit1= class(TTestcase)
    	protected
    		procedure SetUp; override;
    		procedure TearDown; override;
    	published
    		procedure Case_TestOK1; virtual;
    		procedure Case_TestOK2;
    		procedure Case_TestNG1; virtual;
    	end;
    
    implementation
    
    procedure TTestUnit1.SetUp;
    begin
    end;
    
    procedure TTestUnit1.TearDown;
    begin
    end;
    
    procedure TTestUnit1.Case_TestNG1;
    begin
    	check(false, 'TTestUnit1error');
    end;
    
    procedure TTestUnit1.Case_TestOK1;
    begin
    	check(true, '');
    end;
    
    procedure TTestUnit1.Case_TestOK2;
    begin
    	check(true, '');
    end;
    
    initialization
    	TestFramework.RegisterTest('', TTestUnit1.Suite);
    
    end.
    

上記は最も基本的な例なので、実際にはテストする内容に合わせて、テストクラス&メソッドを作成する。
テストメソッドは、published スコープにすること。

テストクラスのデフォルトメソッド:

メソッド名 メソッド説明
SetUp テストの準備作業を行う
TearDown テストの後始末を行う

Checkメソッドの説明:

順序 メソッド説明
1 テスト結果:true = テストOK、false = テストNG
2 エラー時のメッセージ

トラックバック

このエントリのトラックバックURL:
https://www.blackcat.xyz/trackback.php/ProgramingFAQ_del0062

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。