提问人:A G 提问时间:9/9/2018 最后编辑:IInspectableA G 更新时间:6/19/2022 访问量:5570
“TestContext”不包含“DataRow”的定义
'TestContext' does not contain a definition for 'DataRow'
问:
我有UWP项目。使用 VS Community 2017,我向我的解决方案添加了单元测试(添加项目> Windows 通用 -> 单元测试应用程序 (Windows 通用)),
我添加了对我的项目的引用, 我添加了带有测试数据的.csv文件, 我添加了DataSource属性
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”的参数(您是否缺少使用 指令还是程序集引用?
我错过了什么吗?
答:
只需使用 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"]);
评论
使用的是 .NET Core?
适配器的 .Net Core 版本尚不支持此处指定的 DataSource,https://github.com/Microsoft/testfx/issues/233
我的剧本也和你的一样。只需将以下代码行放在项目的 .csproj 文件中,您就可以了:
<TargetFramework>net4.8</TargetFramework>
以前我使用的是net5.0,但是当我开始使用4.8时,我能够解决这个问题。我希望它有所帮助。干杯
如果您仍然无法获得它,请查看此存储库:https://github.com/manu1rock/RestSharpDemo
上面的 repo 会帮到你。
评论