2

私は、C# で書かれた Excel (xls - 97-2003) ファイル ジェネレーターを作成しました。これは基本的にNPOIのラッパーです。

ジェネレーターのインターフェースは次のとおりです。

   public interface IExcelGenerator
   {
      /// <summary>
      /// Add or replace a cell in the file.
      /// </summary>
      /// <param name="cell"></param>
      void AddCell(Cell cell);

      /// <summary>
      /// Create the file in memory.
      /// </summary>
      /// <param name="fileName"></param>
      /// <returns></returns>
      IFile CreateFile(string fileName);
   }

ジェネレーターの最終的な結果は、生のファイルを表す (オブジェクトbyte[]からの) です。IFile

Cellのクラスはすでに単体テスト済みです。ここで、ジェネレーター自体を単体テストしたいと思います。セルの内容と、セルに適用されたフォーマットが正しいことを主張する必要があります。

私が見る唯一の方法は、メモリ内にファイルを生成し (a byte[])、それをディスク上で読み取ったファイルと比較することです。しかし、Excel でファイルを開いて保存するという単純なアクションは、内部で何も変更されていない場合でも、ファイルに多くの重量 (6K から 26K へ) を追加します。したがって、セルの内容が正しい場合でも、2 つの配列が同じになることはほとんどありません。

両方のファイルのすべてのセルの値形式が同じであると断言するにはどうすればよいですか?

4

4 に答える 4

1

すべての値と書式設定の抜本的な単体テストの代わりに、ミッション クリティカルな側面に焦点を当てることを選択できます。それを行う場合、byte[] を C# クラスに変換して (この場合は NPOI を介して) 最終結果を単体テストするか、ファイルに書き込む前にオブジェクトを単純に単体テストすることができます。

于 2013-09-12T18:20:38.093 に答える
0

私が好むアプローチの 1 つは、書式設定済みの「テンプレート」スプレッドシートを作成して開き、値を入力してから、元のテンプレートを変更せずにストリームとして保存することです。テンプレートを手動で検査する必要がありますが、テンプレートには条件付き書式や数式などを含む書式を含めることができます。細胞などの

于 2013-09-12T18:36:58.720 に答える