2012-04-06 8 views
4

Delphi用DocTestに相当するものはありますか?私はDUnitを使用しますが、私はPython DocTestのアイディアが好きです。私はhereのような答えを見ましたが、私は単純な機能のために、DocTestのようなものはOKだと思います。 私の目標は、関数を記述するときにコメントヘッダーにテストを定義することです。 ように:DelphiのPython DocTestに相当しますか?

function Plus(i1, i2 : integer) : integer; 
//>>> Check(Plus(1, 3) = 4) 
begin 
    result := i1 + i2; 
end; 
+1

私はこのようなことは一度もDelphiで起きたことはありません。 Pythonでは、その言語の動的な性質のために、はるかに簡単です。 –

+0

全く同じではありませんが、最近のブログではJordi Corbillaが 'TCustomAttributes'を使って単体テストのアイデアを提示しました。 [dunit-and-tcustomattributes](http://thundaxsoftware.blogspot.se/2012/04/dunit-and-tcustomattributes.html)を参照してください。コメントでテストを追加するのではなく、属性として適用されます。 –

+0

@LURDこの素晴らしい記事は関連していますが、まだ書くべきコードがたくさんあります。属性には固定されたパラメータセットが必要です。 –

答えて

2

アイデアは、あなたが期待値と出力テキストの内容を比較し、テストコードに出力するようにいくつかの結果を「コンソール」を使用することができるということです。

例:regression tests available with the great DWSScript Open Source projectをご覧ください。いくつかの.pasファイルといくつかの関連する.txtファイルがあります。例えば

はabs.pasません:

var vf = 1.5; 
var vi = 2; 

var i : Integer := Abs(-vi); 
PrintLn(i); 
PrintLn(Abs(vi)); 

var f : Float := Abs(-vf); 
PrintLn(f); 
PrintLn(Abs(vf)); 

と、対応するabs.txtコンテンツを:

2 
2 
1.5 
1.5 

今Delphiの世界に統合することにより、既存のソリューションは、すでに何もあり私の知る限り。

コメントにテストを書くことは、IDEの自動補完には不十分であり、オブジェクトのパスカルデザインをやや破ります。 DWSでは何か簡単ですが、コマンドラインのDelphiコンパイラを呼び出す必要があります。正直なところ、テストに専念する独自のユニットを持っているのは何が間違っているのか分かりません。固定値とランダム値を持つfor..toループの小さなコードは、固定されたパラメータセットよりもテストカバレッジがはるかに優れています。

+0

こんにちはアルノー。私の質問は「コンソールに結果を送る方法」ではなく、「関数ヘッダーコメントでテストをスクリプト化する方法」でした。私は質問を編集します... – philnext

+0

@ArnaudこれはどれもPythonのdoctestに似ていますが、おそらく私は何か不足しているのを見て苦労しています。 –

+0

@philnextこれは真のコンソールではなく、テスト目的で使用される仮想コンソールです。関数ヘッダーのコメント内に内容を書き込んでから、DWSを使用して実行することができます(DWSの場合)。もちろん、(dcc.exeを使用して)テストソースコードをコンパイルする必要があります。ヘッダーを抽出するソースパーサーについては、 [キャスタリアパーサー](https://github.com/jacobthurman/Castalia-Delphi-Parser)。 –

関連する問題