2011-01-24 136 views
14

我与下面链接的问题具有基本相同的问题,但似乎无法使其工作。我得到“不能将索引[]应用于System.Data.DataRow类型的表达式”。据我所知,我已经正确实施了解决方案。MSTest中的数据驱动测试 - TestContext.DataRow问题

Problems with data driven testing in 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); 
    } 
} 
+2

发现我的问题:需要在我的测试项目中添加对System.Data的引用。 – bq1990 2011-01-25 03:47:51

回答

17

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

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); 

}

1

我有同样的问题,因为你与this.TestContext.DataRow [“PathFile_Original”], 我在做什么错误是如此简单的说,我没有添加对System.Data的引用,那就是全部。

这是很容易解决,确保你已经有图书馆。

干杯

5

您应该添加引用到您的测试项目来解决这个问题。我不知道为什么VS2013不会自动添加它。

右键点击你的测试项目,Add-> Reference ...-> Assemblies-> Framework-> System.Data,检查一下。

完成!

enter image description here

1

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

如果添加引用后仍然存在问题,则可能需要重新启动Visual Studio,并删除所有冗余引用或头文件。

+0

这不提供问题的答案。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你会能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment)。 – 2015-10-12 22:21:26