Реализовать это очень просто - нужно использовать TestContext
свойство и TestPropertyAttribute
.
пример
public TestContext TestContext { get; set; }
private List<string> GetProperties()
{
return TestContext.Properties
.Cast<KeyValuePair<string, object>>()
.Where(_ => _.Key.StartsWith("par"))
.Select(_ => _.Value as string)
.ToList();
}
[TestMethod]
[TestProperty("par1", "http://getbootstrap.com/components/")]
[TestProperty("par2", "http://www.wsj.com/europe")]
public void SomeTest()
{
var pars = GetProperties();
}
РЕДАКТИРОВАТЬ:
Я подготовил несколько методов расширения, чтобы упростить доступ к TestContext
свойству и действовать так, как будто у нас есть несколько тестовых примеров. См. Пример обработки простых тестовых свойств здесь:
[TestMethod]
[TestProperty("fileName1", @".\test_file1")]
[TestProperty("fileName2", @".\test_file2")]
[TestProperty("fileName3", @".\test_file3")]
public void TestMethod3()
{
TestContext.GetMany<string>("fileName").ForEach(fileName =>
{
var f = new FileInfo(fileName);
var isExists = f.Exists;
Assert.IsFalse(isExists);
});
}
и пример с созданием сложных тестовых объектов:
[TestMethod]
[TestProperty(nameof(FileDescriptor.FileVersionId), "673C9C2D-A29E-4ACC-90D4-67C52FBA84E4")]
public void TestMethod2()
{
TestContext.For<FileDescriptor>().Fill(fi => fi.FileVersionId).Fill(fi => fi.Extension).Fill(fi => fi.Name).Fill(fi => fi.CreatedOn, new CultureInfo("en-US", false)).Fill(fi => fi.AccessPolicy)
.ForEach(fileInfo =>
{
var fileInfoString = fileInfo.ToString();
Assert.AreEqual($"Id: {fileInfo.FileVersionId}; Ext: {fileInfo.Extension}; Name: {fileInfo.Name}; Created: {fileInfo.CreatedOn}; AccessPolicy: {fileInfo.AccessPolicy};", fileInfoString);
});
}
Ознакомьтесь с методами расширения и набором примеров для получения более подробной информации.