私はいくつかのファイル形式のプロジェクトに取り組んでいます。一部の形式は.xsdsによって指定され、他の形式はそれぞれのWebサイトのドキュメントによって指定され、一部はドキュメントのないカスタムの社内形式です。ムワハハハハ。
どうしたの?
ファイルリーダーをテストしたいと思いますが、これを実行する方法が完全にはわかりません。アプリケーションのフローは次のとおりです。
file.___ ===> read by FileReader.java ===> which creates a Model object
どこFileReader
インタフェースがあります
public interface FileReader {
public Model read(String filename);
}
Model
ファイルが読み込まれたときに移入された属性の数を持っています。次のように見えます
public class Model {
List<String> as;
List<String> bs;
boolean isAPain = true;
// ...
}
私は何を試しましたか?
私の唯一のアイデアは、各ファイル形式のファイル「ジェネレーター」を作成することでした。これらのジェネレーターは基本的に、いくつかの変数(たとえば、ファイルで生成するコメントの数)を受け取り、サンプルファイルを出力してから読み込み、結果Model
を最初にファイルの生成に使用した変数と比較するビルダーです。
ただし、これにはいくつかの問題があります。
- 生成されるファイルは、実際のファイルのようには見えません。ジェネレーターはコンテキストをまったく認識しません。
- 私が手動で変数を設定しているので、ジェネレータがエッジケース用に生成したかどうかを認識するのは困難です。この方法は、1ダースのサンプルファイルを作成するよりもましです。
これを行うためのより良い方法はありますか?
編集:それは私が実際に意味するものなので、ユニットを統合に変更しました。
EDIT2:これは私が言及したエッジケースの例です。
各ファイルは、頂点とエッジで構成されるグラフを表します。これらの頂点とエッジはさまざまな方法でアタッチできます。
v1 -- e1 --> v2 <-- e2 -- v3
とは異なります
v1 -- e1 --> v2 -- e2 --> v3
エッジの方向が重要であるという点で。これが質問の範囲内にあるかどうかはわかりませんが、頂点の数、エッジの数を手動で設定し、接続をランダムに生成するだけでは、適切なエッジケースをすべて考えるのは困難です。
FileReader
実装でトリガーされる可能性のあるエッジケースに基づいて、エッジケースの具体例を挙げてください。例:画像ファイル形式で見つかったエッジケースを考えると、各テーブルエントリについて、プロパティの行/列の組み合わせがサポートされている場合、その組み合わせをカバーする少なくとも1つのテストケース(データファイル)が必要です。