Frage

Das ist mein Szenario, ich mag einen Datengetriebene Unit-Test machen, und dafür, dass umluftunabhängiges ich mag die Datendatei in meiner Montage einbetten. Wie kann ich verweise dann in der DataSourceAttribute des Unit Tests?.

Ich versuche, den Zugriff auf eine Excel 2003-Datei mit dem Microsoft Jet OLE DB-Provider verwenden. Der Unit-Test funktioniert gut, wenn die Datei im Hard-Drive ist aber nicht, wenn ich versuche, die eingebettete Assembly-Datei 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]

Vorgeschlagene

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

War es hilfreich?

Lösung

Ich bezweifle das JET OLEDB hat die Box-Unterstützung aus für basierend auf einer Embedded-Ressourcen auf Datenbanken zu verbinden. Ich sehe zwei Möglichkeiten zum Umgehen dieses:

1. extrahieren Sie die Ressource

In Ihrem Test der extrahieren die Montage zu einem bekannten Ort . Wenden Sie sich an diesem bekannten Ort in Ihrer JET Verbindungszeichenfolge. Bereinigen Sie die entpackte Datei wieder in Ihrem Test der ClassCleanup .

2. schreiben Sie Ihre eigene Datenquelle

Sie könnte der Lage sein, Ihre eigenen DbProviderFactory die unterstützt den Zugriff auf eingebettete Excel-Dateien. Um eine solche Fabrik Erkennbar für mstest, müssen Sie auf Melden Sie Ihr Werk mit Reflektor und von dissassembling Microsoft.VisualStudio.TestTools.Utility.TestDataConnection.Create auf die Spuren starten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top