Тестирование на основе данных в 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 не добавляет его автоматически.
щелкните правой кнопкой мыши тестовый проект, добавить - > ссылка...- >Сборки - >Рамки - >Система.Дейта, проверь.
готово!
У меня была та же проблема, что и у вас с этим.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);
}