2009-12-22 6 views
5

Dies ist mein Szenario, ich möchte einen datengetriebenen Komponententest machen, und um umweltunabhängig zu sein, möchte ich die Datendatei in meine Baugruppe einbetten. Wie kann ich dann im DataSourceAttribute des Unit-Tests referenzieren ?.Wie kann ich eine eingebettete Datendatei für datengetriebene Komponententests referenzieren?

Ich versuche, mit dem Microsoft Jet OleDB Provider auf eine Excel 2003-Datei zuzugreifen. Der Komponententest funktioniert einwandfrei, wenn sich die Datei auf der Festplatte befindet, aber nicht, wenn ich versuche, auf die eingebettete Assemblydatei zuzugreifen. Hier ist mein Beispiel:

Original-

[DeploymentItem ("IHRM.Infrastructure.EFRepositories.Tests \ DataDriven.xls"), Datasource ("System.Data.OleDb", „Provider = Microsoft.Jet .OLEDB.4.0; Data Source = | Datadirectory | \ DataDriven.xls; Erweiterte Eigenschaften = \ "Excel 8.0 \"“, "Sheet1 $", DataAccessMethod.Sequential), Testmethod]

Empfohlene

[DataSource ("System.Data.OleDb", "Provider = Microsoft.Jet.OLEDB.4.0; Datenquelle = "Was hier zu setzen"; Erweiterte Eigenschaften = \ "Excel 8.0 \" "," Sheet1 $ ", DataAccessMethod.Sequential), DeploymentItem (" IHRM.Infrastructure.EFrepositories.Tests \ DataDriven.xls "), TestMethod]

+0

Haben Sie den Vorschlag von Wim umgesetzt? Wenn ja, können Sie einen Beispielcode veröffentlichen? –

Antwort

2

Ich bezweifle, dass die JET OLEDB hat die Unterstützung für die Verbindung zu Datenbanken basierend auf einer eingebetteten Ressourcen. Ich sehe zwei Möglichkeiten, dies zu umgehen:

1. Extrakt der Ressource

In Ihrem Test des ClassInitialize, man konnte extract the assembly resource an einen bekannten Ort. Beziehen Sie sich auf diese bekannte Position in Ihrer JET-Verbindungszeichenfolge. Bereinigen Sie die extrahierte Datei erneut in Ihrem Test ClassCleanup.

2. Schreiben Sie Ihre eigene Datenquelle

Sie könnte Lage sein, eigene DbProviderFactory zu schreiben, welche Dateien Excel eingebettet unterstützt erreichbar. Um eine solche Factory für Mstest zu finden, müssen Sie register your factory mit DbProviderFactories.

Um zu sehen, wie MSTEST intern Datenquellen behandelt, öffnen Sie die Microsoft.VisualStudio.QualityTools.Common.dll Baugruppe mit reflector und folgen Sie dem Weg durch Zerlegung Microsoft.VisualStudio.TestTools.Utility.TestDataConnection.Create.

Verwandte Themen