Как получить имя метода модульного теста во время выполнения из модульного теста?

Как получить имя модульного теста из внутреннего модульного теста?

У меня есть следующий метод внутри класса BaseTestFixture:

public string GetCallerMethodName()
{
    var stackTrace = new StackTrace();
    StackFrame stackFrame = stackTrace.GetFrame(1);
    MethodBase methodBase = stackFrame.GetMethod();
    return methodBase.Name;
}

Мой класс Test Fixture наследуется от базового:

[TestFixture]
public class WhenRegisteringUser : BaseTestFixture
{
}

и у меня есть следующий системный тест:

[Test]
public void ShouldRegisterThenVerifyEmailThenSignInSuccessfully_WithValidUsersAndSites()
{
    string testMethodName = this.GetCallerMethodName();
    //
}

Когда я запускаю его из Visual Studio, он возвращает имя моего тестового метода, как и ожидалось.

Когда это запускается TeamCity, вместо этого возвращается _InvokeMethodFast(), который, по-видимому, является методом, который TeamCity генерирует во время выполнения для собственного использования.

Итак, как я могу получить имя тестового метода во время выполнения?

22
задан sharptooth 5 March 2013 в 12:15
поделиться