fptestの使い方

久しぶりにPascalが触りたくなったのでFreePascalでアプリを書こうかと。
といっても昔作ったやつをまた作り直してるってだけなんですが……


Delphi向けのユニットテストライブラリとしてDUnitなんてのがありましたが、
更新も止まっているみたいで、DUnit2も進捗がないようです。(多分)
今回はFreePascalを使うのですが、DUniteは以前使った記憶ではFreePascalで使えなかったのですよね。
他にないのか探してみたらgithubにfptestというDUnit2からフォークしたものがあるではないですか。
そういうわけで今回はこれを使うことにしたのでした。
GitHub - graemeg/fptest: Testing framework for the Object Pascal language using the Free Pascal compiler.

テストユニット

unit Aaa;

interfaces

uses
  TestFramework;

type
  TTestCaseAaa = class(TTestCase)
  published
    procedure TestOne;
  end;

procedure RegisterTests;

implementation

procedure TTestCaseAaa.TestOne;
begin
  Check(1 + 1 = 2, 'TTestCaseAaa#TestOne');
end;

procedure RegisterTests;
begin
  TestFramework.RegisterTest(TTestCaseAaa.Suite);
end;

end.

テストユニットはこんな感じ。
TTestCaseを継承してpublishedでテストメソッドを書いてあげればOKです。

テストの登録・実行

program test;

uses
  Aaa, TextTestRunner;

begin
  Aaa.RegisterTests;
  RunRegisteredTests;
end.

呼ぶ方はこれだけです。

コンパイル・実行

$ fpc -Mobjfpc -WC -Fu.\fptest\src test.lpr
$ test.exe

これコンパイルと実行を。今回はTextTestRunnerをusesに入れたので、
コマンドライン用にコンパイルしましたが、GUI用のGUITestRunnerもあるようです。