Смотрите на http://selenium.openqa.org/ , это предлагает хороший автоматизированный способ встроить модульные тесты, сцепляющиеся в браузер. существует хороший плагин Firefox для записи тестов и может использовать почти любую платформу поблочного тестирования. У нас было представление/демонстрация в нашей группе локального пользователя, встречающейся в прошлом месяце, и это выглядело потрясающим.
В итоге я использовал следующий код FluentValidation для проверки соответствующих элементов в каждом списке, большое спасибо Гуванте, так как он был вдохновлен его псевдокодом :)
RuleFor(f => f.Names).Must((f, d) =>
{
for (int i = 0; i < d.Count; i++)
{
if ((String.IsNullOrEmpty(d[i]) &&
!String.IsNullOrEmpty(f.URLs[i])))
return false;
}
return true;
})
.WithMessage("Names cannot be empty.");
RuleFor(f => f.URLs).Must((f, u) =>
{
for (int i = 0; i < u.Count; i++)
{
if ((String.IsNullOrEmpty(u[i]) &&
!String.IsNullOrEmpty(f.Names[i])))
return false;
}
return true;
})
.WithMessage("URLs cannot be empty.");
Вот псевдокод решения грубой силы. (Я не могу придумать какой-либо способ LINQ для выполнения индексированных сравнений) Приносим извинения за урезание синтаксиса Fluent.
Must(Names.Length == URLs.Length).WithMessage("Names must be equal in size to URLs");
for (int i = 0; i < Name.Length; i++)
{
Must(string.IsNullOrEmpty(Names[i]) ^^ string.IsNullOrEmpty(URLs[i])).WithMessage("Either Name and URL must be non-empty, or both must be empty, index = " + i);
}
Надеюсь, вы понимаете суть, вы также можете изучить общие методы LINQ, вероятно, один из них я пропустил .