14

我遇到的问题与下面链接的问题基本相同,但我似乎无法让它工作。我收到“无法将索引 [] 应用于 System.Data.DataRow 类型的表达式”。据我所知,我已经正确实施了解决方案。

MSTest 中数据驱动测试的问题

[TestClass]
public class UnitTest1
{
    private TestContext testContextInstance;

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

    private ServiceReference1.ProductCatalogClient client = new ServiceReference1.ProductCatalogClient("BasicHttpBinding_IProductCatalog");

    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\CountList.csv", "CountList#csv", DataAccessMethod.Sequential), DeploymentItem("..\\ServiceTest\\CountList.csv"), TestMethod]
    public void AreCountsCorrect()
    {
        int id = TestContext.DataRow["Id"] as int;
        int count = client.GetProductCount(id);
        Assert.IsTrue(count == TestContext.DataRow["Count"] as int);
    }
}
4

5 回答 5

17

添加System.Data对测试项目的引用。不知道为什么不会自动包含它,因为 DataRow 用于数据驱动测试。

于 2011-01-25T03:50:26.263 回答
5

您应该将 Reference 添加到您的测试项目以解决此问题。不知道为什么VS2013没有自动添加。

右键单击您的测试项目,Add->Reference...->Assemblies->Framework->System.Data,检查它。

完毕!

在此处输入图像描述

于 2014-10-14T04:53:37.837 回答
1

我在 this.TestContext.DataRow["PathFile_Original"] 上遇到了和你一样的问题,我做错的很简单,我没有添加对 System.Data 的引用,仅此而已。

这很容易修复,请确保您已经拥有库。

干杯

于 2014-06-23T18:03:50.273 回答
1

正如其他人所说,要解决您的问题,您应该System.Data在项目中添加对的引用。

如果在添加该引用后仍有问题,则可能需要重新启动 Visual Studio,并删除任何多余的引用或using标头。

于 2015-10-12T17:08:56.493 回答
0

这个和我一起工作

[TestMethod]
    [TestCategory("Category 4")]
    [DataSource("MyExcelDataSource")]
    [DeploymentItem("UnitTestProject\\DBConnections.xlsx")]
    public void testwithexceldata()
    {
        //http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.testcontext.datarow.aspx

        int x = TestContext.DataRow.Table.Rows.Count;
        int Balance = Convert.ToInt32(TestContext.DataRow["Balance"]);
        int Amount = Convert.ToInt32(TestContext.DataRow["Amount"]);
        Assert.AreEqual(Balance, Amount);

}

于 2013-11-17T10:56:52.630 回答