XUNIT - возможно ли получить экземпляр тестового класса из параметра IMessageSinkMessage слушателя - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь написать слушатель 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 ().

Спасибо.

...