2011-07-12 1 views
3

Javaのコードを1つ作成して、ディレクトリの内容をzipファイルに圧縮します。ディレクトリジッパーのJUnit

/** 
* Zips the contents of the directory into the zip file. 
* @param directory the directory to zip 
* @param zipFilename the file name to zip into 
*/ 
public static void doZIP(String directory, String zipFileName) 
{ 
    //do the zipping 
} 

は、今は、上記方法のためのJUnitテストケースを記述する必要が次のよう

メソッドのシグネチャです。正確に何をテストすればいいのですか?

注:JUnitテストケースの書き方についての回答はありません。

ありがとうございます。

答えて

5

一時ディレクトリを作成し、ディレクトリにいくつかのファイルを書き込みます。その後、引数として一時ディレクトリと与えられたzipファイル名を持つメソッドを呼び出します。 zipファイルが存在することをテストします。次に、ZipFileで開くことができることをテストし、zipファイルに期待されるzipエントリを見つけます。

このメソッドは、契約を非常にうまく指定していません。たとえば、ディレクトリが存在しない場合、またはzipファイルを書き込むことが不可能な場合は何をするのかは分かりませんので、これらの側面をテストするのは難しいです。しかし、通常、コーナーケースが何であるかを知っているので、ユニットテストを書く方法の開発者です。

1

場合は理想的には、あなたのテストは成功するでしょう:あなたは7-zipやWinzipの
2のようなアプリケーションによってアクセス可能である有効なzipファイルを作成することができます

1))を使用すると、コンテンツを解凍するときは、正確に取り戻しますあなたが圧縮したもの

あなたのアプリケーションに解凍機能を組み込んでいない限り、JUnitテストでこれらを容易にすることができるかどうかはわかりません。その場合、コードのセクションを実行して手動でテストします。

作成した後にzipを解凍する機能がある場合は、MD5ハッシュのようなものを使用して古い/新しい内容を比較して一致するものを探します。

+1

Javaでディレクトリ全体のMD5を実行できますか?それは個々のファイルとその中の他のサブディレクトリを持ちます。 – user801138

+1

作成したzipファイルのチェックサムを実行し、それを期待されたzipファイルと比較することがその方法です。 – luketorjussen