2011-01-24 44 views
0

いくつかの.csvファイルを生成しています。このファイルをZipファイル内で圧縮する必要があります。わかりました、私はこれを行うためのフレームワークを持っており、おそらくすべてがうまくいくでしょう。Zipファイル内のファイル数をカウントする#

しかし!私はいくつかのテストをした後、私はちょうどコードを書くことができますTDDと言うように!

私の最初のテストサウンドはシンプルですが、私はZipファイルを読む際にいくつかの問題を抱えています。誰も私のzipファイルのファイル数を数える簡単な方法を知っていますか?

+0

Huh?何を聞いていますか? – SLaks

+0

あなたはフレームワークを持っており、これはzipファイルを作成できるzipライブラリを意味すると仮定します。これはzipファイルも読み取らないのでしょうか?その場合は、zipファイルをロードしてから直接カウントを取得するか、仮想ディレクトリ構造をトラバースしてカウントを取得する必要があります(存在する場合)。あなたのライブラリの実装に依存します。あなたが図書館を持っていない場合は、以下の他の人があなたのためにいくつかの名前を付けました。 :) – Chris

+0

いいクリス!私の図書館は伝統的なコードですが、最初は主なプロジェクトで使用していきます。しかし、私のテストプロジェクトでは、私のコードが私の望むものとまったく同じであることを確認したいのです。私はDotNetZipを使用しています。すぐにコードを投稿します。 – Custodio

答えて

4

DotNetZipのようなものをお探しですか?

EDIT:たとえば:

int count; 
using (ZipFile zip = ZipFile.Read(path)) 
    count = zip.Count; 
+0

DotNetZipを使用して簡単な数のサンプルを提案できますか? – Custodio

1

を使用し、私はそれはあなたが尋ねたTDDの質問だったとは思わないが、私はとにかくそれにお答えします。

 
[Test] 
public void countsNumberOfFilesInZip() { 
    var counter = new FileCounter("existing_archive_with_2_files.zip"); 
    AssertEqual(2, counter.count()); 
} 

ここで、選択したライブラリを使用して、FileCounterを動作させます。いったん動作し、通過テストがある場合は、コードをリファクタリングして、モックフレームワークを使用して呼び出しをzipライブラリに模倣するようにします。今では、ファイルシステムに依存しません。 (あなたのテストがディスクI/Oによってあまりにも遅くならない限り、これはあまり進まないでしょう)

+0

ありがとう@bcarlso!私はI/Oの問題を理解していますが、この場合、ディスクにファイルを保存する何らかの統合テストが本当に必要です。私はちょうどデータベースから偽のデータを持ってくるためにモックを使用しています。 – Custodio

関連する問題