Тестирование на основе данных в MSTest-проблема с TestContext.объект DataRow

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

5 ответов


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


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

щелкните правой кнопкой мыши тестовый проект, добавить - > ссылка...- >Сборки - >Рамки - >Система.Дейта, проверь.

готово!

enter image description here


У меня была та же проблема, что и у вас с этим.TestContext.Объекта Datarow["PathFile_Original"], то, что я делал неправильно, было настолько просто, что я не добавил ссылку на систему.Дейта, вот и все.

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

Ура


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

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


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

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

}