#c# #selenium-webdriver #.net-core #mstest
#c# #selenium-webdriver #.net-core #mstest
Вопрос:
Из приведенного ниже следует, что атрибут DataSource больше не поддерживается в проектах .net Core MSTest. Итак, какова альтернатива этому?
Информация: .NET Core не поддерживает атрибут DataSource. Если вы попытаетесь получить доступ к тестовым данным таким образом в проекте модульного тестирования .NET Core или UWP, вы увидите ошибку, похожую на «‘TestContext’ не содержит определения для ‘DataRow’ и не может быть найден доступный метод расширения ‘DataRow’, принимающий первый аргумент типа ‘TestContext’ (вам не хватает директивы using или ссылки на сборку?)».
Ответ №1:
7 сентября 2020 года — Обходного пути нет
По этому поводу существует открытая проблема issue-233, и никаких комментариев о том, когда это можно исправить. Есть несколько обходных путей:
DynamicDateAttribute (пример CSV)
private static string[] SplitCsv(string input)
{
var csvSplit = new Regex("(?:^|,)("(?:[^"] |"")*"|[^,]*)", RegexOptions.Compiled);
var list = new List<string>();
foreach (Match match in csvSplit.Matches(input))
{
string value = match.Value;
if (value.Length == 0)
{
list.Add(string.Empty);
}
list.Add(value.TrimStart(','));
}
return list.ToArray();
}
private static IEnumerable<string[]> GetData()
{
IEnumerable<string> rows = System.IO.File.ReadAllLines(@"ResourcesNameAddressCityStateZip.csv").Skip(1);
foreach (string row in rows)
{
yield return SplitCsv(row);
}
}
[TestMethod]
[DynamicData(nameof(GetData), DynamicDataSourceType.Method)]
//x [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"ResourcesNameAddressCityStateZip.csv", "NameAddressCityStateZip#csv", DataAccessMethod.Sequential)]
public void TestMethod1(string input, string expected)
{
// Arrange
//x string input = _testContext.Properties["Data"].ToString(); //x _testContext.DataRow["Data"].ToString();
//x string expected = _testContext.Properties["Expected"].ToString(); //x _testContext.DataRow["Expected"].ToString();
var parser = _serviceProvider.GetService<Parser>();
// Act
string actual = parser.MultiParser(input, ModeType.NameAddressCityStateZipCountry).ToString();
// Assert
Assert.AreEqual(expected, actual);
}
но у этого есть недостатки.
Перенесите его самостоятельно в код
Как показано в комментарии здесь
Дождитесь реализации
Комментарии:
1. @Kataras — Спасибо! Мне нужно прочитать файл данных xml, есть ли способ, которым я могу написать специальный класс и использовать его в качестве атрибута в моих методах тестирования (MS test2)? Если да, не могли бы вы просветить меня?