我有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'的参数(您是否缺少 指令还是程序集引用?)
我想念什么吗?
答案 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"]);