Java を使用して、2 つの csv ファイルを比較し、結果を Fitnesse の新しいファイルに出力する必要があります。私はFitnesseの初心者なので、これに光を当ててください. どの器具を使用するか迷っています。
2 に答える
これには 2 つの方法があります。1 つは FitNesse を非常に活用しており、もう 1 つは仕事をこなすだけです。
オプション 1: FitNesse を大いに活用する
2 つの CSV ファイルの 1 つが固定され、常に同じであると仮定すると、ファイルを読み込んで結果を FitNesse テストの表と比較できるフィクスチャを作成できます。これは次のようになります。
|Query:list csv data|c:\test\file_to_check.csv|
|col1 |col2 |col3 |
|Joe |12 |red |
|Steve |15 |purple |
テストが実行されると、ファイルが読み込まれ、行と列に分割され、ヘッダー行を使用して値が列に接続されます。次に、標準のSlimを返します(現時点ではSlimを使用していると思います)行のリスト。それ自体が名前のリストであり、文字列としての値のペアです。一致する場合は、すべて緑色で表示されます。それらが一致しない場合、不一致を示すエラーが発生します。このようなフィクスチャは、欠落している行や余分な行も識別し、それらをページに表示します。
オプション 2: やり遂げる
2 番目のオプションは、FitNesse ほどフレンドリーではありませんが、機能する可能性があります。このバージョンでは、すべての検証がフィクスチャにプッシュされます。その場合、入力として 2 つのファイル名を取り、すべてフィクスチャ コード内で比較を行うことができるフィクスチャを作成します。次に、失敗の兆候を返します。これは次のようになります (ただし、他にも機能するデザインがあります。
|compare csv files|
|file1 |file2 |match?|
|c:\test_file_1.csv|c:\test_file_1.csv|true |
これは、次のようなある種のコードで機能します (CSV ファイルを比較するという難しい部分を行う必要があります)。
public class CompareCsvFiles {
private String filenameForFirstFile = null;
private String filenameForSecondFile = null;
private String matched = null;
public void setFile1(String filename){
filenameForFirstFile = filename;
}
public void setFile2(String filename){
filenameForSecondFile = filename;
}
public String match(){
return new CsvCompareTool(filenameForFirstFile, filenameForSecondFile).match();
}
private class CsvCompareTool{
private String filename1 = null;
private String filename2 = null;
public CsvCompareTool(String file1, String file2){
filename1 = file1;
filename2 = file2;
}
public String match(){
// create the necessary code to do the comparison here.
// I'll leave that to you.
return "Not implemented yet";
}
}
}
エラーが発生した場合は、エラーが発生した行を説明する文字列を返します。
CSV ファイルの解析の詳細については、Java の CSV パーサーに関する質問を参照してください。
最終コメント
個人的には、オプション 1 を好みます。最終的な検証に FitNesse を利用し、特定の失敗をページに表示します。ただし、1 つのファイルが一貫した期待される結果である必要があります。
いずれの場合も、CSV ファイルの処理を容易にするライブラリを見つけようとします。エスケープしてコンマを埋め込む方法については、いくつかの楽しいルールがあるからです。
これを行うために TableTable スタイル テーブルを使用して何かを作成することもできますが、お勧めしません。
FitLibrary を使用している場合は、どちらの例とも同じようなことができるはずですが、コーディングにいくつかの違いがあります。
FitLibrary の CompareFiles フィクスチャはどうですか?