¿Cómo obtener el nombre de la prueba de unidad de la prueba dentro de la unidad?¿Cómo obtener el nombre del método de prueba de la unidad en tiempo de ejecución dentro de la prueba unitaria?
Tengo el siguiente método dentro de una clase BaseTestFixture:
public string GetCallerMethodName()
{
var stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase methodBase = stackFrame.GetMethod();
return methodBase.Name;
}
Mi clase de dispositivo de pruebas hereda de la base de uno:
[TestFixture]
public class WhenRegisteringUser : BaseTestFixture
{
}
y tengo la prueba del sistema a continuación:
[Test]
public void ShouldRegisterThenVerifyEmailThenSignInSuccessfully_WithValidUsersAndSites()
{
string testMethodName = this.GetCallerMethodName();
//
}
Cuando ejecuto esto desde Visual Studio, devuelve el nombre de mi método de prueba como se esperaba.
Cuando esto se ejecuta por TeamCity, en su lugar se devuelve _InvokeMethodFast()
que parece ser un método que TeamCity genera en tiempo de ejecución para su propio uso.
Entonces, ¿cómo podría obtener el nombre del método de prueba en tiempo de ejecución?
¿Está compilado en modo de lanzamiento incluso cuando se inicia desde VS? –
¿Obtiene la información de conjunto para cada método llamado en la pila? Tal vez podrías subir la pila buscando tu ensamblaje de prueba. –
Una stacktrace ayudaría, para ver si el nombre del método real aparece más arriba en la pila de llamadas. –