TestContext не содержит определения для DataRow - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть проект UWP. Используя VS Community 2017, я добавил модульный тест в свое решение (Добавить проект-> Windows Universal -> Приложение Unit Test (Windows Universal)),

Я добавил ссылку на свой проект, Я добавил .csv файл с тестовыми данными, Я добавил атрибут источника данных

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestProject1
{
 [TestClass]
 public class UnitTest1
 {
  private TestContext testContextInstance;
  public TestContext TestContext
  {
   get { return testContextInstance; }
   set { testContextInstance = value; }
  }

  [TestMethod()]
  [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", 
  @".\TestData.csv", "TestData#csv", DataAccessMethod.Sequential)]

  public void ParameterizedTest()
  {  
   int value = Convert.ToInt32(TestContext.DataRow["Row1"]); 

Но я все еще не могу использовать TestContext.DataRow

Ошибка CS1061 «TestContext» не содержит определения для «DataRow» и нет доступного метода расширения 'DataRow', принимающего первый аргумент типа «TestContext» может быть найден (вы не используете директива или ссылка на сборку?)

Я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Используете ли вы .NET Core?

Версия адаптера .Net Core пока не поддерживает DataSource, как указано здесь https://github.com/Microsoft/testfx/issues/233

0 голосов
/ 09 сентября 2018

просто используйте testContextInstance.DataRow ["Row1"] и, при необходимости, добавьте toString в его конец, например, testContextInstance.DataRow ["Row1"]. ToString ()

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

Также измените имя свойства с TextContent на TextContextInstance , как показано ниже

private TestContext testContextInstance;
public TestContext TestContextInstance
{
   get { return testContextInstance; }
   set { testContextInstance = value; }
}

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

int value = Convert.ToInt32(TestContextInstance.DataRow["Row1"]); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...