我有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”类型的参数(您是否缺少使用 指令还是程序集参考?)
我错过了什么吗?
您使用.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
以上存储库会对您有所帮助。
我面临同样的问题并尝试了所有建议的解决方案。 请尽快帮我解决。 [测试方法] [描述(“使用有效凭据验证是否成功登录。”)] [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);
}
只需使用 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"]);