DataSource
属性もXMLファイルを参照できます。
例:
// SortTest elements are read from the XML named SortTestDataSource.xml
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\SortTestDataSource.xml", "SortTest", DataAccessMethod.Sequential)]
public void SortTest()
{
var reflist = Enumerable.Range(0, 100);
// And you can read the XML attributes of each row as follows
int count = Int32.Parse((string)TestContext.DataRow["Count"]);
SortingAlgorithm algorithm = (SortingAlgorithm)Enum.Parse(typeof(SortingAlgorithm), (string)TestContext.DataRow["Algorithm"]);
Order order = (Order)Enum.Parse(typeof(Order), (string)TestContext.DataRow["Order"]);
int seed = Int32.Parse((string)TestContext.DataRow["Seed"]);
var array = SortHelper.CreateArray<int>(count, order, seed);
Sorter<int> sorter = new Sorter<int>();
sorter.Sort(array, algorithm);
Assert.IsTrue(reflist.SequenceEqual(array));
}
とXMLファイル:
<?xml version="1.0" encoding="utf-8" ?>
<Elements>
<SortTest Count="100" Algorithm="SelectionSort" Order="Random" Seed="0"/>
<SortTest Count="100" Algorithm="QuickSortPivotFirst" Order="Random" Seed="0"/>
<SortTest Count="100" Algorithm="QuickSortPivotMiddle" Order="Random" Seed="0"/>
<SortTest Count="100" Algorithm="MergeSortTopDown" Order="Random" Seed="0"/>
<SortTest Count="100" Algorithm="MergeSortBottomUp" Order="Random" Seed="0"/>
</Elements>
Hmのようになります。これはオプションですが、理想的ではありません。テストデータにはバイナリデータとテキストデータが混在しているので、xmlをエスケープする必要はありません。私はシンプルで目的に合ったファイルフォーマットを念頭に置いています。このユースケースでは簡単に解析することができます。 (基本的に、テストデータはタブ文字で始まらないか、改行を含んでいるので、私はそれらを使ってケースとメタデータを区切ります。 – recursive
属性にファイル名やリソース名を格納していますか? – taffer
ねえ、いい考えです。 – recursive