2011-01-18 9 views
1

Visual Studio 2008の組み込みユニットテストフレームワークを使用して、C#WinFormsアプリケーションのTDDに慣れさせています。このアプリケーションは独自のイメージデータ形式で動作し、サンプルファイルをコンポーネントのセクション(ヘッダー、メタデータ、単一フレーム、すべてのフレームなど)に分割してテストできるようにしました。私のテスト方法のいくつかは同じデータチャンクを使用していますが、「すべてのテストをソリューションで実行する」オプションを選択した場合、同じデータチャンクを使用するテストは "System.IO.IOException"で失敗します:プロセスがファイル 'datachunk.dat 'それは別のプロセスで使用されているためです。これらのテストは、個別に実行されるときに実行されます。 Visual Studioにこれらのテストを同時に実行しないように指示する方法はありますか、それとも間違った方法で行っていますか?同じファイルリソースを使用したVisual Studio 2008のユニットテスト

答えて

1

テストが必要になる前に、「チャンク」をロードするには、intializeメソッドを使用します。その後、テスト全体で同じ "チャンク"を何度も再利用することができます。

ロジックを独自のメソッドにカプセル化し、メソッドのヒット間でリーダーを破壊することもできます。

平和とグレース、 グレゴリーA.ビーマー

+0

ところで、チャンクでシングルトンを設定し、最初に使用するときに「初期化」することができます。 –

+0

これは私の質問に対する解決策として私が使用したアプローチです。私は[ClassInitialize()]を使用して、テストメソッドで使用するチャンクにプライベート静的メンバーを設定しました。 追加のテスト属性メソッドの実行順序を決定するのにhttp://blogs.msdn.com/b/nnaderi/archive/2007/02/17/explaining-execution-order.aspxが便利です。 – Noren

0

TestInitialize関数で1度読み、フィールドに読み込むので、クラス内のすべてのテストで使用できます。

+0

TestInitializeによって引き続き問題が発生することがあります。 ClassInitializeは、複数のテストで使用される「静的な」情報に適しています。 –

0

私はいくつかのことを提案することができます。ファイルが開かれたときにフラグを変更することができるかどう

  1. チェックを。効果的に読むために共有として開くべきです。
  2. ファイルの完全な内容をバイト配列に読み込み、テストでソースとして使用します。それはあまり変わっていません。
  3. 共有リソースとTestInitializeを使用します。
関連する問題