2017-01-17 2 views
0

Ich habe datengesteuerte Komponententests in meiner Lösung eingerichtet. Es ist verkabelt, alles funktioniert gut, was die meisten Artikel und Fragen im Internet scheinen.So lesen Sie jede Zeile in einer Excel-Spalte für einen datengesteuerten Komponententest

Was ich nicht finden kann ist, wie ich nachfolgende Zeilen nach der ersten Zeile in einer bestimmten Spalte lesen.

Zum Beispiel, wenn mein Excel-Dokument-Setup ist wie folgt:

A | B 
------ | ------ 
    A1 | B1 
    A2 | B2 
    A3 | 
    A4 | 

Dann zurück in meiner Einheit Test, den ich so etwas wie:

var getValue = TestContext.DataRow["A"]; 
var getOtherValue = TestContext.DataRow["B"]; 

Die Ausgabe ist, dass getValue = "A1" und getOtherValue = B1. Wenn ich versuche, etwas stattdessen zu tun:

Die Ausgänge sind immer noch genau das gleiche, was sinnvoll ist.

Was ich verwirrt bin, ist, wie man den Wert in A2, A3, B2 und so weiter bekommt. Auf diese Weise kann ich alle verschiedenen Szenarien testen, indem ich sie einfach in Excel einfüge.

Für ein anderes Beispiel, wenn ich diese Tabelle:

Cost | QtyOrdered 
------ | ------------ 
    10 | 10  
    5 | null 
null | 2 
null | null  

Im obigen Szenario würde ich durch all die verschiedenen Reihen laufen mögen und sicherstellen, dass die eingesteckt Werte sind das, was ich erwarte. Die erste Zeile würde ich erwarten 100, und in jeder zusätzlichen Zeile würde ich eine Fehlermeldung in meinem Komponententest erwarten.

Ich sehe nicht wirklich den Punkt der Data Driven Unit Tests in Excel, wenn ich nicht einfach ein paar Daten für mehrere Zeilen für jede Spalte einstecken kann.

+0

Sehen Sie, wenn dies Ihnen hilft: http://stackoverflow.com/questions/15828/reading-excel-files-from-c-sharp –

+0

Sie sollten versuchen, EPPlus, diese Bibliothek geben Sie Zugriff auf Ihre Arbeitsblatt tatsächlich Dimensionen für Zeilen und Spalten (zB hier 4 und 2) –

+0

@JohnG 'DataRow' ist einfach der Index der Spalte oder der Wert in der ersten Zeile (in unserem Fall' A', 'B', etc). Ich bin dafür nicht auf externe Bibliotheken angewiesen, es ist alles eingebaute Funktionalität für .NET Unit Tests. Ich habe tatsächlich meine Frage beantwortet (siehe unten) – maxshuty

Antwort

0

Wenn datengetriebene Einheitentests wie diese durchgeführt werden, wird die Methode einmal für jede Zeile in Ihrer Tabelle aufgerufen. Wenn Sie alles richtig verkabelt haben, brauchen Sie nichts weiter.

Ich werde diese Frage aufgeben, da ich das Gefühl habe, dass es für jemand anderen in der Zukunft nützlich sein könnte, da es nicht sofort offensichtlich war, wie das funktionierte.

0

Sie können die Daten aus Ihrer Excel-Tabelle importieren und Ihre Tests über den resultierenden Datensatz mithilfe von Schleifen oder anderen Mechanismen, die Ihren Anforderungen entsprechen, ausführen. Ich persönlich bevorzuge ClosedXml wegen seiner Benutzerfreundlichkeit und Geschwindigkeit. Alternativ können Sie die native Microsoft OLEDB-Bibliothek verwenden, um es zu erledigen. Viel Glück!

Verwandte Themen