私は Java プログラミングにまったく慣れていませんが、正しい用語を使用し、誤解をできるだけ避けるように努めます。
私の問題に非常によく似たトピックへの回答をいくつか見つけましたが、それらが私の問題にどのように適合するかわかりません。あるいは、実際には適合しないだけかもしれません。それらのいくつかはモックされたオブジェクトを使用していますが、私の場合はそれが正しいオプションかどうかわかりません。
概要
ランダムにアクセスされたバイナリ ファイルから情報が読み込まれるオブジェクトの配列が必要です。バイナリ ファイルの最初のバイトは、データがファイルに格納される方法を定義するファイルのヘッダーです。基本的には、ファイル内の目的のデータの位置を計算するのに役立ついくつかのフィールドの長さを示します。
そこで、 UnitListElementオブジェクトで指定された目的のデータをUnitオブジェクトにロードするために呼び出されるメソッドをテストしたいと思います。このため、バイナリ ファイルの 1 回の読み取りのみに焦点を当てています。
より詳細なビュー
いくつかの属性を持つUnitという Java クラスがあります。たとえば、 a、*b* およびcとします。この属性の値は、メソッド呼び出しgetDataFromBinFileでロードされます。
public class Unit{
public double[] a;
public double[] b;
public double[] c;
getDataFromBinFile(UnitListElement element){
<here loads the data from the binary file with random access>
}
}
バイナリ ファイルからデータをロードする方法は、バイナリ ファイルを開き、バイナリ ファイル内の目的のデータにアクセスします。読み取る必要のあるデータは、UnitListElementオブジェクトで指定されます。
public class UnitListElement{
public String pathOfFile;
public int beginToReadAt; // info related to where the desired data begins
public int finishReading; // info related to where the desired data ends
}
バイナリ ファイルから読み取る最初と最後のバイト位置を計算するために、バイナリ ファイルのヘッダーと共に使用される属性beginToReadAtおよびfinishReading時間参照。
そこで、メソッドgetDataFromBinFile(unitListEl)を呼び出して、返された情報が正しいかどうかをテストする必要があります。
ソリューションのオプション
最初のオプション
同様の問題を抱えたいくつかの投稿では、モック オブジェクトの使用を提案しています。オブジェクトのモックに関するドキュメントを見つけようとしましたが、初心者向けの簡単なガイドは見つかりませんでした。したがって、モック オブジェクトをあまり理解していませんが、他のオブジェクトとの相互作用だけでなく、バイナリ ファイルの読み取りをテストしたいので、このケースには当てはまらないというのが私の印象です。
2番目のオプション
もう 1 つのオプションは、ヘルパー メソッドを使用してテスト内でテスト用のバイナリ ファイルを作成し、fi を @BeforeClass で作成し、この一時ファイルを使用してテストを実行してから、@AfterClass メソッドで削除することです。
質問
TDD アプローチを検討する際のベスト プラクティスは何だと思いますか? この場合、モックオブジェクトは本当に適合しますか? もしそうなら、完全な初心者向けの基本的な例を含むドキュメントはありますか?
またはその一方で、ファイルの作成は読み取り方法のテストに適していますか?
ありがとう
よろしくお願いします。