2017-01-17 2 views
0

私のソリューションでデータ駆動型単体テストをセットアップしました。それは有線であり、すべてがうまくいきます。これはオンラインの記事や質問のほとんどが焦点を当てているようです。データ駆動型単体テストの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]; 

出力はまったく同じですが、意味があります。

私が混乱しているのは、A2A3B2などの値を取得する方法です。そうすれば、さまざまなシナリオをExcelに差し込むだけで、すべてのシナリオをテストできます。上記のシナリオでは

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

私は別の行のすべてを実行すると、プラグインの値は、私が期待していることを確認したいと思います:私は、このテーブルを持っている場合、別の例として

、。最初の行は私が100と期待していて、余分な行ごとに私のユニットテストでエラーメッセージが出ると思います。

各列の複数の行に複数のデータを挿入するだけでは、Excelでデータ駆動型の単位テストのポイントが実際に表示されません。

+0

これが役立つかどうかを確認してください:http://stackoverflow.com/questions/15828/reading-excel-files-from-c-sharp –

+0

EPPlusを試す必要があります。このライブラリは、実際のワークシートへのアクセスを提供します。 –

+0

@JohnG 'DataRow'は単に列のインデックス、または最初の行(この場合は' A'、 'B'など)の値です。私はこれのための外部ライブラリに依存していない、それはすべてのユニットテストのための機能に組み込まれています。私は実際に私の質問に答えました(下記参照) – maxshuty

答えて

0

このようなデータ駆動型ユニットテストを実行すると、スプレッドシートのすべての行に1回ずつメソッドが呼び出されます。すべてが正しく配線されていれば、他のものは必要ありません。

これはどういう仕組みがすぐには明らかにならなかったので、今後誰かに役立つと思うので、この質問を残しておきます。

0

Excelシートからデータをインポートし、必要なループやメカニズムを使用して結果のデータセットに基づいてテストを実行できます。私は個人的にそれが使いやすさと速度のためにClosedXmlを好む。または、ネイティブのMicrosoft OLEDBライブラリを使用してその処理を実行することもできます。 幸運を祈る!

関連する問題