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.
Sehen Sie, wenn dies Ihnen hilft: http://stackoverflow.com/questions/15828/reading-excel-files-from-c-sharp –
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) –
@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