mstest的DataSource属性的.NET核心替代品是什么? DynamicDateAttributeCSV示例自己输入代码等待实施

问题描述

从下面了解到MSTest的.net核心项目不再支持DataSource属性。那么,替代方案是什么?

链接https://docs.microsoft.com/en-us/visualstudio/test/how-to-create-a-data-driven-unit-test?view=vs-2019

信息: .NET Core不支持DataSource属性。如果尝试在.NET Core或UWP单元测试项目中以这种方式访问​​测试数据,则会看到类似于“'TestContext'不包含'DaTarow'的定义且没有可访问的扩展方法'DaTarow'的错误。可以找到接受类型为'TestContext'的第一个参数(您是否缺少using指令或程序集引用?)”。

解决方法

2020年9月7日-没有解决方法

对此有一个未解决的问题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(@"Resources\NameAddressCityStateZip.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",@"Resources\NameAddressCityStateZip.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);
}

但是它有缺点。

自己输入代码

根据评论here

等待实施