什么是TestContext.DataRow ["MyColumnName"]的替代品

Dav*_*nes 9 c# mstest datasource asp.net-core

在.Net核心单元测试项目中使用MSTest.我试图使用csv数据源来提供测试方法的数据.

以前,我会在.Net Framework测试项目中使用类似下面的内容:

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"data.csv", "data#csv", DataAccessMethod.Sequential),
     DeploymentItem("data.csv"),
     TestMethod]
    public void ValuesController_Post()
    {
        _controller.Post(TestContext.DataRow["body"]);
        _valuesRepository.Verify(_ => _.Post(It.IsAny<string>()), Times.Once);
    }
Run Code Online (Sandbox Code Playgroud)

这里的关键是TestContext中的DataRow属性.这似乎不存在于TestContext的.Net Core版本中.

我将如何在.Net Core中执行此操作?

Car*_*ret 5

自从转向 aspnet 核心后,我一直无法使用相同的 [Datasource(...)] 属性来迭代测试数据,我的数据驱动测试总是被跳过。

您是否考虑过使用 [DataTestMethod] 和 [DynamicData] 切换到另一种方法,并使用读取您文件的自定义源?

这是一篇关于这个的好文章:

https://www.meziantou.net/2018/02/05/mstest-v2-data-tests

也许另一种方法是在测试开始时读取整个文件,然后作为单个单元测试遍历数据集?

希望这可以帮助。