私は、foreachを使ってコレクション内のすべてのアイテムに対してメソッドを実行するユニットテストをしています。 現在、メソッドが正しい値を返したかどうかをテストするforeachの最後にアサーションがあります。 これは動作しますが、メソッドが初めて失敗するとテストが失敗します。コレクション内のサブアイテムはテストされません。Visual Studio 2008でコレクションに対して繰り返し単体テストを繰り返すことはできますか?
私は本質的に、コレクション内の各アイテムについて本格的なテストを実行したいと考えています。テストが失敗しても、すべての項目に対してテストが実行されます。テスト結果ウィンドウには、各パスの結果データが表示されます。
データソースを使用してデータベースの各行に対してテストを実行できますが、この場合は便利ではありません。別の方法がありますか?
public void TestXHTMLBlock()
{
foreach (XmlNode current in Test_Cases.SelectNodes("Test_Cases/Test_Case"))
{
XHTMLBlock x = new XHTMLBlock(current.SelectSingleNode("Input").CreateNavigator(), "");
XmlDocument temp = new XmlDocument();
temp.LoadXml("<Output>" + x.sWordML(false) + "</Output>");
XmlDiff diff = new XmlDiff(XmlDiffOptions.IgnoreComments |
XmlDiffOptions.IgnoreDtd |
XmlDiffOptions.IgnoreNamespaces |
XmlDiffOptions.IgnorePI |
XmlDiffOptions.IgnorePrefixes |
XmlDiffOptions.IgnoreWhitespace |
XmlDiffOptions.IgnoreXmlDecl);
StringBuilder str = new StringBuilder();
XmlWriter xwrite = XmlWriter.Create(str);
bool ret = diff.Compare(current.SelectSingleNode("Output"), temp.SelectSingleNode("Output"), xwrite);
xwrite.Close();
Assert.IsTrue(ret, current.SelectSingleNode("Description").InnerText);
}
}
私は、これはXMLデータソースのための最有力候補のように見えますけど、私は仕事にそれを得ることができない。
私の現在のテストは次のようになります。 Inputタグには、データソースが解析しようとするXMLが含まれています。つまり、私のテストでは正しくアクセスできず、入力XMLの一部にデータソースパーサのチョークがあります。データソースのXMLパーサーに内部XMLをテキストとして扱うように指示することができれば、それは同様に機能します。
あなたが現在持っているものを投稿して、あなたが見ているもののよりよいアイデアを得ることができますか? – JasCav