Тестирование, управляемое данными в MSTest - проблема с TestContext.DataRow

У меня по существу та же проблема, что и вопрос, связанный ниже, но я не могу заставить его работать. Я получаю "не может применить индексирование [] к выражению типа 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);
    }
}

Ответы

Ответ 1

Добавьте ссылку на System.Data в тестовый проект. Не знаю, почему это не будет автоматически включаться, поскольку DataRow используется для испытаний, управляемых данными.

Ответ 2

Вы должны добавить ссылку на свой тестовый проект, чтобы исправить эту проблему. Я не знаю, почему VS2013 не добавляет его автоматически.

щелкните правой кнопкой мыши ваш тестовый проект, Add- > Reference...- > Assemblies- > Framework- > System.Data, проверьте его.

Готово!

enter image description here

Ответ 3

У меня была такая же проблема, как у вас с this.TestContext.DataRow [ "PathFile_Original" ], что я делал неправильно, было так просто, я не добавил ссылку на System.Data, вот и все.

Это довольно легко исправить, убедитесь, что у вас уже есть библиотека.

Приветствия

Ответ 4

Чтобы исправить вашу проблему, как говорили другие, вы должны добавить ссылку на System.Data в свой проект.

Если у вас все еще есть проблема после добавления этой ссылки, возможно, вам придется перезапустить Visual Studio и удалить любые избыточные ссылки или заголовки using.

Ответ 5

этот работает со мной

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

}