“ TestContext”不包含“ DataRow”的定义

时间:2018-09-09 15:05:45

标签: c# unit-testing uwp mstest

我有UWP项目。使用VS Community 2017,我向解决方案中添加了一个单元测试(添加项目-> Windows Universal->单元测试应用程序(Windows Universal)),

我添加了对项目的引用, 我添加了带有测试数据的.csv文件, 我添加了数据源属性

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestProject1
{
 [TestClass]
 public class UnitTest1
 {
  private TestContext testContextInstance;
  public TestContext TestContext
  {
   get { return testContextInstance; }
   set { testContextInstance = value; }
  }

  [TestMethod()]
  [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", 
  @".\TestData.csv", "TestData#csv", DataAccessMethod.Sequential)]

  public void ParameterizedTest()
  {  
   int value = Convert.ToInt32(TestContext.DataRow["Row1"]); 

但是我仍然不能使用 TestContext.DataRow

  

错误CS1061'TestContext'不包含'DataRow'的定义   并且没有可访问的扩展方法“ DataRow”接受第一个   可以找到类型为'TestContext'的参数(您是否缺少   指令还是程序集引用?)

我想念什么吗?

2 个答案:

答案 0 :(得分:1)

您是否正在使用.NET Core?

适配器的.Net Core版本不支持数据源,https://github.com/Microsoft/testfx/issues/233

答案 1 :(得分:0)

只需使用 testContextInstance.DataRow [“ Row1”] ,并可以选择在其末尾添加 toString ,就像 testContextInstance.DataRow [“ Row1”]。ToString( )

  

您在尝试使用 TextContext.DataRow 时犯了一个常见错误,其中 TextContext 是一个没有静态属性的类,该类名为 DataRow 因此,为了使用它,您需要创建一个已经名为 testContextInstance 的类的实例。

也可以将属性名称从 TextContent 更改为 TextContextInstance ,如下所示:

private TestContext testContextInstance;
public TestContext TestContextInstance
{
   get { return testContextInstance; }
   set { testContextInstance = value; }
}

因为现在进行更改时,永远不要将属性的名称完全与类型(class)完全相同,所以您甚至可以像以前一样直接使用该属性。

int value = Convert.ToInt32(TestContextInstance.DataRow["Row1"]);