ここにいる少数のDelphiユーザーがユニットテストをどのように行っているのか疑問に思っていますか?あなたが見つけたIDEと統合するものがうまく機能するものはありますか?そうでない場合は、どのツールを使用していますか。また、すべてがどのように機能するかを示すミニプロジェクトの例を知っていますか。
アップデート:
私はBDS2006Proを使用していることを忘れましたが、時々Delphi 7にアクセスし、もちろん他の人が他のバージョンを使用している可能性があります。
ここにいる少数のDelphiユーザーがユニットテストをどのように行っているのか疑問に思っていますか?あなたが見つけたIDEと統合するものがうまく機能するものはありますか?そうでない場合は、どのツールを使用していますか。また、すべてがどのように機能するかを示すミニプロジェクトの例を知っていますか。
私はBDS2006Proを使用していることを忘れましたが、時々Delphi 7にアクセスし、もちろん他の人が他のバージョンを使用している可能性があります。
DUnitは、win32Delphiで使用されるxUnitタイプのユニットテストフレームワークです。Delphi 2005以降、DUnitはIDEの証明書ポイントに統合されています。Delphi IDE用の他のDUnit統合ツールは、ここにあります。DUnitには、例を含むドキュメントが付属しています。
SynCommons オープン ソース ユニットで利用可能な単体テスト クラスをご覧ください。これは、すべての回帰テストのオープン ソース フレームワークで使用されます。ベストではないかもしれませんが、一見の価値はあります。
http://blog.synopse.info/post/2010/07/23/Unit-Testing-light-in-Delphiを参照してください。
単体テストを実装するには、次のようなクラスを作成して新しいテスト ケースを宣言するだけです。
type
TTestNumbersAdding = class(TSynTestCase)
published
procedure TestIntegerAdd;
procedure TestDoubleAdd;
end;
procedure TTestNumbersAdding.TestDoubleAdd;
var A,B: double;
i: integer;
begin
for i := 1 to 1000 do
begin
A := Random;
B := Random;
CheckSame(A+B,Adding(A,B));
end;
end;
次に、テスト スーツを作成して実行します。
最新の 1.13 バージョンでは、MadExcept と同様に、.map ファイルの内容をソースとして使用して、発生した例外などのスタック トレースを備えた新しいログ メカニズムもあります。
単体テスト クラスで使用されるようになったため、エラーが発生すると、ソース行とスタック トレースを含むエントリがログに作成されます。
C:\Dev\lib\SQLite3\exe\TestSQL3.exe 0.0.0.0 (2011-04-13)
Host=Laptop User=MyName CPU=2*0-15-1027 OS=2.3=5.1.2600 Wow64=0 Freq=3579545
TSynLogTest 1.13 2011-04-13 05:40:25
20110413 05402559 fail TTestLowLevelCommon(00B31D70) Low level common: TDynArray "" stack trace 0002FE0B SynCommons.TDynArray.Init (15148) 00036736 SynCommons.Test64K (18206) 0003682F SynCommons.TTestLowLevelCommon._TDynArray (18214) 000E9C94 TestSQL3 (163)
ログなしのテスト スーツとログありのテスト スーツの違いは次のとおりです。
procedure TSynTestsLogged.Failed(const msg: string; aTest: TSynTestCase);
begin
inherited;
with TestCase[fCurrentMethod] do
fLogFile.Log(sllFail,'%: % "%"',
[Ident,TestName[fCurrentMethodIndex],msg],aTest);
end;
ロギング メカニズムは、テストをログに記録するだけではありません。メソッドの再帰呼び出しをログに記録し、ログに表示する情報を選択し、顧客側からアプリケーションをプロファイリングし、公開されたプロパティ、TList または TCollection コンテンツを JSON としてログの内容など...
初めて .map ファイルを読み取ると、.mab ファイルが作成され、必要なすべてのシンボル情報が含まれます。.exe を含む .mab ファイルをクライアントに送信したり、そのコンテンツを .exe に埋め込むこともできます。この .mab ファイルは最適化されています。927,984 バイトの .map は、71,943 の .mab ファイルに圧縮されます。
したがって、このユニットは、純粋なオープンソースでは、DUnit と MadExcept の結婚式の自然な子として認識できます。:)
追加情報は、フォーラムで入手できます。遠慮なく尋ねてください。フィードバックと機能リクエストは大歓迎です! Delphi 6 から XE まで動作します。
DUnit2 はhttp://members.optusnet.com.au/~mcnabp/から入手できます。
DUnit2 は元の dunit よりも定期的に変更されます。Delphi 2009 でも動作します。
試してみてください: http://sourceforge.net/projects/dunit2/ - 元の作者である Peter McNab が数年前に亡くなったため、移動しました。dunit メーリング リストではまだいくつかの活動が行われています。
開発中の最新の Delphi バージョン用の新しいユニット テスト フレームワークがあります: https://github.com/VSoftTechnologies/DUnitX
通常、ユニット テスト プロジェクトを作成します ([ファイル] -> [新規] -> [その他] -> [ユニット テスト] -> [テスト プロジェクト])。必要なものは揃っているので、今のところ十分です。
私は Delphi 2007 を使用しているので、これが 2006 年に利用可能かどうかはよくわかりません。
DUnit を使用してすべてのロジック コードの単体テストを行い、AQTimeに含まれるコード カバレッジ プロファイラーを使用して、コードのすべてのパスがテストによって実行されることを確認します。
Delphi 5でDUnitを使用しようとしましたが、うまく機能しませんでした。特に、COMインターフェイスを実装している場合は、すべてのテストインフラストラクチャをセットアップするための多くの依存関係が見つかりました。新しいバージョンでテストサポートが改善されたかどうかはわかりません。