Как я могу получить доступ к TestContext из TestMethodAttributeC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу получить доступ к TestContext из TestMethodAttribute

Сообщение Anonymous »

Я пытаюсь написать собственный TestMethodAttribute, который позволяет аннотировать тест некоторой метаинформацией, которая должна выводиться в файл .trx, созданный программой запуска тестов MSTest.
Поэтому я реализовал следующий атрибут:

Код: Выделить всё

public class CustomTestMethodAttribute : TestMethodAttribute
{

private string _meta1;
private string[] _meta2;

public CustomTestMethodAttribute(string meta1, string[] meta2, string? displayName = null) : base(displayName)
{
_meta1 = meta1;
_meta2 = meta2;
}

public override TestResult[] Execute(ITestMethod testMethod)
{
MethodInfo methodInfo = testMethod.MethodInfo;

Dictionary metaProperties = new()
{
{
"task", new Dictionary
{
{ "className", testMethod.TestClassName },
{ "method", methodInfo.Name },
{ "meta1", _meta1 },
{ "meta2", _meta2 }
}
}
};

// that is the line that doesn't work
testContext.WriteLine($"META_INFORMATION={JsonSerializer.Serialize(metaProperties)}");

return new TestResult[] { testMethod.Invoke(null) };
}

}
Это позволило бы мне аннотировать тестовый метод следующим образом:

Код: Выделить всё

[CustomTestMethod(meta1: "12345", meta2:new []{"12345", "23456"})]
public void MyTestMethod()
{
...
}
Мой вопрос: какой самый простой способ получить доступ к TestContext в методе Execute CustomTestMethodAttribute. TestContext внедряется (с помощью MSTest?) в мой тестовый класс через

Код: Выделить всё

[TestClass]
class Test1
{
public TestContext TestContext { get; set; }

...
}
и, следовательно, доступен в методе тестирования через TestContext.
Если доступ к TestContext внутри атрибута невозможен - как я могу использовать что-то вроде testContext.WriteLine() в своем атрибуте?

Подробнее здесь: https://stackoverflow.com/questions/789 ... dattribute
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»