私のソリューションでデータ駆動型単体テストをセットアップしました。それは有線であり、すべてがうまくいきます。これはオンラインの記事や質問のほとんどが焦点を当てているようです。データ駆動型単体テストのExcelの列の各行を読み取る方法
私が見つけることができないのは、どの列でも最初の行の後に続く行を読み取る方法です。例えば
私のExcel文書はそうのような設定の場合:
A | B
------ | ------
A1 | B1
A2 | B2
A3 |
A4 |
そして、戻って私のユニットテストでは、私が何かの操作を行います。
var getValue = TestContext.DataRow["A"];
var getOtherValue = TestContext.DataRow["B"];
出力はそのgetValue = "A1"
とgetOtherValue = B1
です。代わりにこのようなことをしようとすると:
var getValue = TestContext.DataRow[0];
var getOtherValue = TestContext.DataRow[1];
出力はまったく同じですが、意味があります。
私が混乱しているのは、A2
、A3
、B2
などの値を取得する方法です。そうすれば、さまざまなシナリオをExcelに差し込むだけで、すべてのシナリオをテストできます。上記のシナリオでは
Cost | QtyOrdered
------ | ------------
10 | 10
5 | null
null | 2
null | null
私は別の行のすべてを実行すると、プラグインの値は、私が期待していることを確認したいと思います:私は、このテーブルを持っている場合、別の例として
、。最初の行は私が100
と期待していて、余分な行ごとに私のユニットテストでエラーメッセージが出ると思います。
各列の複数の行に複数のデータを挿入するだけでは、Excelでデータ駆動型の単位テストのポイントが実際に表示されません。
これが役立つかどうかを確認してください:http://stackoverflow.com/questions/15828/reading-excel-files-from-c-sharp –
EPPlusを試す必要があります。このライブラリは、実際のワークシートへのアクセスを提供します。 –
@JohnG 'DataRow'は単に列のインデックス、または最初の行(この場合は' A'、 'B'など)の値です。私はこれのための外部ライブラリに依存していない、それはすべてのユニットテストのための機能に組み込まれています。私は実際に私の質問に答えました(下記参照) – maxshuty