У меня есть модульный тест, в котором я запускаю метод для каждого элемента в коллекции (используя foreach).
В настоящее время у меня есть утверждение в конце foreach, чтобы проверить, вернул ли метод правильное значение.
Это работает, но в результате происходит сбой теста при первом сбое метода. Никакие последующие предметы в коллекции не проверены.
Я бы хотел провести полноценный тест для каждого элемента в коллекции. Тест запускается для каждого элемента, даже если один не пройден. И окно результатов теста показывает данные результатов для каждого прохода.
Я знаю, что могу использовать источник данных для запуска теста для каждой строки в базе данных, но в этом случае это не удобно. Есть ли другой способ?
Мой текущий тест выглядит так:
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 как текст, это также сработало бы ...