5

これが私のシナリオです。データ ドリブンの単体テストを作成し、環境に依存しないようにするために、アセンブリにデータ ファイルを埋め込みたいと考えています。単体テストの DataSourceAttribute でどのように参照できますか?

Microsoft Jet OleDB Provider を使用して Excel 2003 ファイルにアクセスしようとしています。ファイルがハードドライブにある場合は単体テストは正常に機能しますが、埋め込まれたアセンブリ ファイルにアクセスしようとすると機能しません。これが私の例です:

オリジナル

[DeploymentItem("IHRM.Infrastructure.EFRepositories.Tests\DataDriven.xls"), DataSource("System.Data.OleDb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DataDriven.xls;拡張プロパティ=\"Excel 8.0\"", "Sheet1$", DataAccessMethod.Sequential), TestMethod]

提案

[DataSource("System.Data.OleDb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "ここに入れるもの" ; Extended Properties=\"Excel 8.0\"", "Sheet1$", DataAccessMethod. Sequential)、DeploymentItem("IHRM.Infrastructure.EFRepositories.Tests\DataDriven.xls")、TestMethod]

4

1 に答える 1

2

JET OLEDB が組み込みリソースに基づくデータベースへの接続をすぐにサポートしているとは思えません。これを回避するには、次の 2 つのオプションがあります。

1. リソースを抽出する

テストのClassInitializeで、アセンブリ リソースを既知の場所に抽出できます。JET 接続文字列でこの既知の場所を参照してください。抽出したファイルをテストのClassCleanupで再度クリーンアップします。

2. 独自のデータ ソースを作成する

埋め込まれた Excel ファイルへのアクセスをサポートする独自のDbProviderFactoryを作成できる場合があります。このようなファクトリを mstest で検出できるようにするには、ファクトリをDbProviderFactoriesに登録する必要があります。

mstest がデータ ソースを内部で処理する方法を確認するには、リフレクターMicrosoft.VisualStudio.QualityTools.Common.dllを使用してアセンブリを開き、分解して追跡を開始します。Microsoft.VisualStudio.TestTools.Utility.TestDataConnection.Create

于 2009-12-22T13:35:41.957 に答える