2011-09-15 6 views
1

私は自動テストフレームワークを作成しています。現在、問題を最もよく見つけるために、ランダムなデータを生成して複数のパスを試すなど、テストにランダム性を導入しました。しかしこれは問題につながりました。私はもはや簡単に失敗したテストを再実行することができません。プログラムの実行後に実行できるようなパラメータを含むメソッド呼び出しを記録する

私は、そのパラメータを含めて、テストのアクションを保存する方法を実装する必要があります。私がフレームワークを実装したやり方では、すべての「仕事」は1つのクラスで処理されるため、このクラスのパラメータで呼び出されたメソッドを記録することができれば、スクリプトで実行されたアクションの完全な記録が得られます。

このメソッドのリストから、これらのメソッド呼び出しを、できるだけ手作業をほとんどしないで簡単に再実行する必要があります。

申し訳ありませんこれまでに尋ねられたことがありましたが、何か助けになるものが見つかりませんでした。

答えて

2

複雑なリフレクションやアスペクト指向のプログラミングでアクションを記録して再生することは可能ですが、ランダム性を少し違った方法で処理することで、プロセスを繰り返し実行するほうが簡単でしょう。

java.util.Randomの現在のバージョンが指定されていない場合、正確にどのようにシードが決定されるかわかりません。 1.4.2では、それは、代わりにそれは現在の時刻に基づいて何かをデフォルトとし、あなたのコントロールの外に、明示的に知られている何か(おそらくSystem.currentTimeMillis())にシードを設定させるの

public Random() { this(System.currentTimeMillis()); } 

しかし、もしあるとして記載されていましたし、使用されたシードを記録すると、同じシードで簡単に再生し、同じシーケンスの「ランダム」番号を得ることができます。

+0

ねえ、このDonのおかげで。私はあなたのアプローチを実装しましたが、何らかの理由で必ずしも同じ出力を生成するとは限りません。私はさらにそれを調べるつもりです。私は、Javaの再帰とファイルへの書き込みを使用して別のソリューションを実装することになった。 – James

関連する問題