Я пытаюсь написать слушатель xUnit, который может через отражение получить доступ к полям тестового класса.
Вот как это выглядит:
using System;
using System.Reflection;
using ConsoleApp5;
using Xunit;
using Xunit.Abstractions;
public class MyMessageSink : IMessageSink
{
public bool OnMessage(IMessageSinkMessage message)
{
if (message is ITestFinished)
{
string testName = ((ITestFinished)message).Test.DisplayName;
decimal time = ((ITestFinished)message).ExecutionTime;
ITypeInfo classInfo = ((ITestFinished) message).TestClass.Class;
Type classType = classInfo.ToRuntimeType();
FieldInfo[] fieldsInfo = classType.GetFields();
foreach (var f in fieldsInfo)
{
if (f.Name.Equals("browserName"))
{
string value = (string)f.GetValue();
}
}
}
return true;
}
}
В тестовом классе есть поле с именем browserName, которое я могу получить с помощью отражения.
Я бы тоже хотел получить значение поля, но для этого мне нужно передать экземпляр класса в качестве параметра в GetValue ().
Мой вопрос если возможно получить экземпляр класса теста, начиная с параметра сообщения IMessageSinkMessage метода OnMessage ().
Спасибо.