我對我的ASP.NET應用程序有一個快速和簡單的單元測試框架 - 一個ASPX頁面,它有一個比較預期結果和實際結果的方法,並創建一個表格。它根據需要進行編譯,讓我可以快速創建並運行一系列測試,即使沒有運行VS.NET。我可以用堆棧跟蹤檢索實際的代碼行嗎?
下面是一個例子電話:
PrintResult(
expected: "$A$1",
actual: RST.ExcelReference.FormatReferences("{{REF:1:0:1:0}}", false, 0, 0),
arguments: "RST.ExcelReference.FormatReferences(\"{{REF:1:0:1:0}}\", false, 0, 0)");
(添加爲清楚起見命名參數)
正如你可以想像,同步實際呼叫,該呼叫的顯示是一種痛苦。
我知道我不能檢查Environment.StackTrace
中的參數值,只有方法定義和行號。但在我的情況下,我並不需要實際的參數值。我通常使用文字作爲參數來調用這個方法,所以我需要的就是堆棧跟蹤中PrintResult()入口點的源代碼行。
源代碼似乎以某種方式可用於ASP.NET,因爲它出現未處理的異常。我怎樣才能訪問它?
這正是我到目前爲止所做的......將ASPX的源代碼(Request.PhysicalPath)讀入到一個字符串列表中,併爲該幀的「GetFileLineNumber() - 1」打印行。直接閱讀源代碼似乎有點奇怪,認爲可能有一種更優雅的方式來這樣做。 (我實際上使用'新的System.Diagnostics.StackTrace(true)'而不是'Environment.StackTrace',所以不需要解析字符串。) – richardtallent 2012-08-03 16:07:07