如何從單元測試中獲取單元測試名稱?如何從單元測試中得到運行時的單元測試方法名稱?
我有一個BaseTestFixture類內的以下方法:
public string GetCallerMethodName()
{
var stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase methodBase = stackFrame.GetMethod();
return methodBase.Name;
}
我的測試夾具類從基地一個繼承:
[TestFixture]
public class WhenRegisteringUser : BaseTestFixture
{
}
和我有以下系統測試:
[Test]
public void ShouldRegisterThenVerifyEmailThenSignInSuccessfully_WithValidUsersAndSites()
{
string testMethodName = this.GetCallerMethodName();
//
}
當我在Visual Studio中運行它時,它會按照預期返回我的測試方法名稱。
當它由TeamCity運行時,將返回_InvokeMethodFast()
,這似乎是TeamCity在運行時爲其自己使用而生成的一種方法。
那麼我怎麼能在運行時獲得測試方法名?
即使從VS啓動時它是否以發佈模式編譯? – 2012-03-12 11:57:54
你是否獲得堆棧中調用的每個方法的彙編信息?也許你可以走上堆棧尋找你的測試組件。 – 2012-03-12 12:00:45
堆棧跟蹤會幫助您查看實際方法名稱是否在調用堆棧的更上方列出。 – 2012-03-12 12:01:03