Тестирование на основе данных в 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);
    }
}

person bq1990    schedule 24.01.2011    source источник
comment
Нашел мою проблему: нужно добавить ссылку на System.Data в моем тестовом проекте.   -  person bq1990    schedule 25.01.2011


Ответы (5)


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

person bq1990    schedule 25.01.2011

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

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

Готово!

введите здесь описание изображения

person karl li    schedule 14.10.2014

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

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

Ваше здоровье

person L. Vicente Mangas    schedule 23.06.2014

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

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

person Craig Brown    schedule 12.10.2015
comment
Это не дает ответа на вопрос. Чтобы подвергнуть критике или запросить разъяснения у автора, оставьте комментарий под его сообщением — вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно репутация, вы сможете комментировать любой пост. - person Bob Kaufman; 13.10.2015
comment
Спасибо, Боб. Я отредактировал свой ответ, чтобы он читался как ответ на вопрос. - person Craig Brown; 13.10.2015

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

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

}

person Wazzz    schedule 17.11.2013