Не могу найти хорошего объяснения работы атрибута [DataSource]
. Везде работа с таблицами. А если я хочу просто туда загрузить пару переменных без таблиц, то как быть? и как к этим переменным обращаться в самом [TestMetod]
?
Назначение атрибута [DataSource]
— получать информацию именно из таблиц. ВЫ описываете ваши табличные данные в этом атрибуте, в результате ваш тестовый метод будет вызван по разу для каждой из строк таблицы.
Для того, чтобы получить доступ к информации из вашей строки таблицы внутри теста, нужно в тестовом классе использовать свойство TestContext
, и в нём обращаться к DataRow
.
Пример:
[TestClass]
public class UnitTest04052017
{
// convention: needed to get the data for data-driven test
public TestContext TestContext { get; set; }
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
SubDir + @"\Tests.csv", @"Tests#csv", DataAccessMethod.Sequential)]
public void TestingAlphaCentauriDistance()
{
var coordX = (double)TestContext.DataRow[0];
var coordY = (double)TestContext.DataRow[1];
var expected = (double)TestContext.DataRow[2];
var dx = coordX - 77777;
var dy = coordX - 99999;
var distance = Math.Sqrt(dx * dx + dy * dy);
DoubleAssert.AreClose(distance, expected, eps);
}
}
Если вы хотите воспользоваться просто конкретным набором значений, вам нужно разрефакторить ваш тест, чтобы он принимал значения на вход:
[TestClass]
public class UnitTest04052017
{
// convention: needed to get the data for data-driven test
public TestContext TestContext { get; set; }
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
SubDir + @"\Tests.csv", @"Tests#csv", DataAccessMethod.Sequential)]
public void TestingAlphaCentauriDistance()
{
var coordX = (double)TestContext.DataRow[0];
var coordY = (double)TestContext.DataRow[1];
var expected = (double)TestContext.DataRow[2];
TestMain(coordX, coordY, expected);
}
[TestMethod]
public void TestingRandomDistance()
{
TestMain(1, 2, 300);
TestMain(2, 1, 400);
}
void TestMain(double coordX, double coordY, double expected)
{
var dx = coordX - 77777;
var dy = coordX - 99999;
var distance = Math.Sqrt(dx * dx + dy * dy);
DoubleAssert.AreClose(distance, expected, eps);
}
}
С использованием mstest - никак нельзя сразу внести переменные без использования сторонних файлов. Обычно создают один файл .xlsx и в разных вкладках добавляют данные для разных тестов. В итоге получается один файл с данными для всех тестов, которые не перемешаны между собой.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Скажите пожалуйста как на c# сделать Request Payload запрос? Я просто впервые за всю жизнь встретил такой тип запроса :(
Есть комбобокс на WPFВ боксе несколько значений нужно что бы при выборе одного запускался один метод а при выборе другого значения - соответственно...