1

データのコレクションを含むデータ ファイルによって駆動される単体テストを作成する必要があります。明らかな理由から、csv ファイルは適切ではありませんが、XML はそれ自体を示唆しています。しかし、私はそれを機能させることができないようです。

データ ファイルの一部を次に示します (1 つのテスト レコードのみを示します)。

<?xml version="1.0" encoding="utf-8" ?>
<testData>
  <testRecord>
    <displayColumnNames>
      <name>Include</name>
      <name>SampleInt1</name>
      <name>SampleInt2</name>
      <name>SampleInt3</name>
      <name>SampleInt4</name>
      <name>SampleInt5</name>
    </displayColumnNames>
    <valueColIDs>
      <valueColID>1</valueColID>
      <valueColID>3</valueColID>
      <valueColID>5</valueColID>
    </valueColIDs>
    <calculations>
      <calculation colID ="2"><![CDATA[500 * [:5]]></calculation>
      <calculation colID ="5"><![CDATA[500 * [:2]]></calculation>
    </calculations>
    <expected>
      <item>5</item>
    </expected>
  </testRecord>
</testData>

基本的に、各テスト レコード (「displayColumnNames」など) から多数のデータ コレクションを読み取り、テストで値を反復処理できることを期待していました。このような各コレクション内の要素の数は、テスト ケースごとに異なります。

ただし、当面の障害は私のコード行です。

var displayColumnNames = TestContext.DataRow["displayColumnNames"];

これにより、「列 'displayColumnNames' はテーブル testRecord に属していません。」というテスト時のエラーがスローされます。

これを単純な「フラット」xml データ ファイルでうまく動作させることはできますが、それは役に立ちません。VS2008 (つまり、MSTest) が処理できないことをしようとしていますか、それともばかげたことをしていますか?

4

1 に答える 1

1

使用できます

TestContext.DataRow.GetChildRows("testRecord_displayColumnNames")

ネストされたノードにアクセスします。リレーション名 - 「testRecord_displayColumnNames」を変更して、xml 階層をさらに深くすることができます。HTH

于 2013-02-28T00:03:21.417 に答える