Member 13871081 Ответов: 0

System.reflection.targetparametercountexception:несоответствие количества параметров - NUNIT C#


Я надеюсь, что смогу получить некоторое представление о проблеме, которую я изо всех сил пытался решить. Я новичок в c# Nunit и Visual studio.
У меня есть XML, хранящий имена пользователей и XML, хранящий пароли, а также файл .resx в Visual Studio, хранящий все имена браузеров.
Каждый пароль и имя пользователя должны быть параллельно протестированы против каждого браузера, прежде чем приступить к выбору следующего набора имени пользователя и паролей.Для этого я использовал IEnumerable, чтобы получить return TestCaseData.

публичный класс TestBase
{
public IWebDriver webDriver;
public static string Pass1 { get; private set; }

публичный статический пустота главный(строка[] аргументы)
{
XmlDocument xDoc = новый XmlDocument();
xdoc по.Нагрузка(@"C:xxxxx\UserNamePassword.xml");
Руководство узел1 = xdoc по.SelectSingleNode("//Test/DataRow");
Руководство Узел3 = xdoc по.SelectSingleNode("//Тест");
XmlNode root = xDoc.Функцию documentelement;
string[] namesArray = новая строка[node1.ChildNodes.Рассчитывать];
int i = node1.ChildNodes.Count;// подсчитайте количество потоков данных в xml - файле

ReturnValuesToTest(Узел3);
}


public static IEnumerable<testcasedata> ReturnValuesToTest(XmlNode node3)
{

foreach (узел XmlNode в node3)
{

List<string> newpassword = новый список<string>();
IEnumerator<string> newUSer = UsernameXmlDataDriven(узел).Метод getenumerator();
// var newUSer = UsernameXmlDataDriven(узел).Метод getenumerator();
пока (новый_пользователь.Метод MoveNext()) // выбираем Имя пользователя
{
ВАР новый_пользователь = новый список<строка> У();//добавление имени пользователя в ВАР новый_пользователь список
новый пользователь.Add(newUSer.Current);// добавить всех пользователей в список
строка User1 = newUSer.Current;//User1 будет иметь текущее имя пользователя

IEnumerator<string> newPass = PasswordXmlDataDriven(узел).Метод getenumerator();
//var newPass = PasswordXmlDataDriven(узел).GetEnumerator();//теперь вызовите пароль
пока (newPass.Метод MoveNext())
{
новый пользователь.Добавить(newPass.Текущий);// добавить все пароли в список
строка Pass1 = newPass.Текущий;
}

String[] browsers = May3rdXML.Автоматическая настройка.BrowsersToRunWith.Расщеплять(',');


foreach (строка b в браузерах)
{
новый пользователь.Добавить(б);// новый пользователь список пользователя,пароль,браузер


yield return new TestCaseData( User1, Pass1, b);
}
}

}
}

public static IEnumerable<string> UsernameXmlDataDriven(XmlNode node3)// узел 1-это DataRow


{


foreach (XmlNode childnode в node3.SelectSingleNode("Имя Пользователя"))
{


yield return childnode.InnerText;// возвращает только имена пользователей


}

}

public static IEnumerable<string> PasswordXmlDataDriven(XmlNode node3)// узел 1-это DataRow

{


foreach (XmlNode childnode в node3.SelectSingleNode("Пароль"))
{


yield return childnode.InnerText;// возвращает только имена пользователей


}

}




}
}

Мои тесты находятся в отдельном классе LoginTestClass.cs
а Verify_Login будет использовать возвращенные testdata для выполнения тестов входа в систему в разных браузерах .
Тест:
[Тестовая смесь]
[Распараллеливается]

открытый класс LoginTestClass : TestBase
{

[TestCaseSource(typeof(TestBase), "ReturnValuesToTest")]
общественная статический недействительным Verify_Login(строка новый_пользователь, newpass строку, строку минувшие сутки в результате)
{


if (newuser[0].ToString() == null)
{
throw new NullReferenceException("нет значения");
}
if (newpass.ToString() == null)
{
throw new NullReferenceException("нет значения");
}
TestBase parentref = new TestBase();// объявить класс родительского класса





if (browsername."Равно" ("т. е."))
{

parentref.webDriver = новый
InternetExplorerDriver(@"U:xxxx/Win32_3.11.1");

}
еще
if (browsername.Равно("Хром"))
{
parentref.webDriver = новый ChromeDriver(@"C:xxxx\chromedriver_win32");


}

Что я уже пробовал:

Я попробовал следующее:
1.выход новой TestCaseData(новый объект[] { новый_пользователь[0], новый_пользователь[1], новый_пользователь[2] })
где newuser-это список и хранит имя пользователя,пароль и имя браузера.

Richard Deeming

Таким образом, нет никакой связи между именами пользователей, паролями и браузерами; вы просто хотите получить кросс-продукт всех трех наборов?

Member 13871081

Я пытаюсь протестировать все браузеры с различными комбинациями имен пользователей и паролей, используя параметризованные NUnit testcasedata для параллельного тестирования.
Спасибо

0 Ответов