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

问题描述 投票:0回答:4

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

我添加了对我的项目的引用, 我添加了带有测试数据的 .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”类型的参数(您是否缺少使用 指令还是程序集参考?)

我错过了什么吗?

c# unit-testing uwp mstest
4个回答
5
投票

您使用.NET Core吗?

适配器的 .Net Core 版本尚不支持此处指定的 DataSource https://github.com/Microsoft/testfx/issues/233


0
投票

我的剧本也和你的一样。只需将以下代码行放入项目的 .csproj 文件中即可:

<TargetFramework>net4.8</TargetFramework>

之前我使用的是net5.0,但是当我开始使用4.8时,我能够解决这个问题。我希望它有帮助。干杯

如果您仍然无法获取它,请查看此存储库: https://github.com/manu1rock/RestSharpDemo

以上存储库会对您有所帮助。


0
投票

我面临同样的问题并尝试了所有建议的解决方案。 请尽快帮我解决。 [测试方法] [描述(“使用有效凭据验证是否成功登录。”)] [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "C:\Users\wajiz.pk\source epos\SwagLabs_Test_Framework\SwagLabs_Test_Framework\Data.xml"、"自动化/执行/Login_TC_001"、DataAccessMethod.Sequential)] 公共无效Login_TC_001() {

string url = testContextInstance.DataRow["url"].ToString();
string username = testContextInstance.DataRow["username"].ToString();
string password = testContextInstance.DataRow["password"].ToString();

LoginPage loginPage = new LoginPage();
BasePage.OpenUrl(url);
loginPage.Login(username, password);

}


-1
投票

只需使用 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; }
}

因为当您进行此更改时,您永远不应该将属性命名为与其类型(类)完全相同的属性,现在您甚至可以像之前尝试一样直接使用该属性。

int value = Convert.ToInt32(TestContextInstance.DataRow["Row1"]); 
© www.soinside.com 2019 - 2024. All rights reserved.