DUnit が通常動作する方法は、いくつかの公開されたメソッドを記述し、DUnit がそれらをテストとして実行することです。やりたいことはちょっと違う。データに基づいて実行時にテストを作成したい。入力ファイルを処理して出力ファイルを作成する特定のモジュールをテストしようとしています。テスト入力ファイルのセットと、対応する既知の良好な出力ファイルがあります。アイデアは、入力を処理し、既知の適切なものに対して出力をチェックする、入力ファイルごとに 1 つのテストを動的に作成することです。
ただし、ここでの実際のデータ ソースは重要ではありません。難しいのは、DUnit をデータ駆動型の方法で動作させることです。この問題のために、データ ソースが単なる乱数ジェネレーターであると仮定します。以下に、問題の核心に迫る具体的な問題の例を示します。
実行時にいくつかのテスト オブジェクト (TTestCase など) を作成します。たとえば、10 個のテスト オブジェクトを作成します。
- ランダムに生成された整数から実行時に名前が付けられます。(「名前」とは、テストランナー ツリーに表示されるテストの名前を意味します。)
- ランダムな整数に基づいて成功または失敗します。偶数なら合格、奇数なら不合格。
DUnit の設計からは、このようなことが可能になるように十分な柔軟性を考慮して設計されているように見えます。私はそれがそうであるかどうかはわかりません。TAbstractTest と ITest から継承して独自のテスト クラスを作成しようとしましたが、いくつかの重要なメソッドにアクセスできませんでした。私も TTestCase から継承しようとしましたが、そのクラスは公開されたメソッドを実行するという考えと密接に結びついています (そして、テストはメソッドにちなんで名付けられているので、たとえば「go」と呼ばれるものを 1 つだけ持つことはできませんでした。すべてのテストは「go」と呼ばれ、すべてのテストに個別に名前を付けたい)。
または、代わりに、私がやりたいことができる DUnit に代わるものはありますか?